feat: ports - git port
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* <sys/socket.h> for the MontaukOS git port.
|
||||
*
|
||||
* MontaukOS does have TCP -- the kernel exposes it as IPC handles through
|
||||
* montauk::socket(), not as BSD descriptors -- but nothing bridges the two
|
||||
* into the fd space that read()/write() use, and git's transports assume a
|
||||
* descriptor it can hand to a sub-process. Until that bridge exists, every
|
||||
* call here fails with ENOSYS, which surfaces as "unable to connect" from
|
||||
* `git clone git://...` rather than as a crash.
|
||||
*
|
||||
* That leaves the local transports -- init, add, commit, log, diff, and
|
||||
* clone/fetch/push against a path on disk -- which are what this port is for.
|
||||
*
|
||||
* Implementations in montauk-compat.c.
|
||||
*/
|
||||
#ifndef _MONTAUK_GIT_SYS_SOCKET_H_
|
||||
#define _MONTAUK_GIT_SYS_SOCKET_H_
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
typedef unsigned int socklen_t;
|
||||
typedef unsigned short sa_family_t;
|
||||
|
||||
#define AF_UNSPEC 0
|
||||
#define AF_UNIX 1
|
||||
#define AF_LOCAL 1
|
||||
#define AF_INET 2
|
||||
#define AF_INET6 10
|
||||
|
||||
#define PF_UNSPEC AF_UNSPEC
|
||||
#define PF_UNIX AF_UNIX
|
||||
#define PF_INET AF_INET
|
||||
#define PF_INET6 AF_INET6
|
||||
|
||||
#define SOCK_STREAM 1
|
||||
#define SOCK_DGRAM 2
|
||||
|
||||
#define SOL_SOCKET 1
|
||||
|
||||
#define SO_REUSEADDR 2
|
||||
#define SO_ERROR 4
|
||||
#define SO_KEEPALIVE 9
|
||||
#define SO_LINGER 13
|
||||
|
||||
#define SHUT_RD 0
|
||||
#define SHUT_WR 1
|
||||
#define SHUT_RDWR 2
|
||||
|
||||
#define MSG_PEEK 2
|
||||
|
||||
struct sockaddr {
|
||||
sa_family_t sa_family;
|
||||
char sa_data[14];
|
||||
};
|
||||
|
||||
/* Large enough for sockaddr_in6, aligned like the real thing. */
|
||||
struct sockaddr_storage {
|
||||
sa_family_t ss_family;
|
||||
unsigned long __ss_align;
|
||||
char __ss_padding[112];
|
||||
};
|
||||
|
||||
struct linger {
|
||||
int l_onoff;
|
||||
int l_linger;
|
||||
};
|
||||
|
||||
int socket(int domain, int type, int protocol);
|
||||
int connect(int fd, const struct sockaddr *addr, socklen_t len);
|
||||
int bind(int fd, const struct sockaddr *addr, socklen_t len);
|
||||
int listen(int fd, int backlog);
|
||||
int accept(int fd, struct sockaddr *addr, socklen_t *len);
|
||||
int shutdown(int fd, int how);
|
||||
int setsockopt(int fd, int level, int name, const void *val, socklen_t len);
|
||||
int getsockopt(int fd, int level, int name, void *val, socklen_t *len);
|
||||
int getsockname(int fd, struct sockaddr *addr, socklen_t *len);
|
||||
int getpeername(int fd, struct sockaddr *addr, socklen_t *len);
|
||||
ssize_t send(int fd, const void *buf, size_t len, int flags);
|
||||
ssize_t recv(int fd, void *buf, size_t len, int flags);
|
||||
|
||||
#endif /* _MONTAUK_GIT_SYS_SOCKET_H_ */
|
||||
Reference in New Issue
Block a user