diff options
Diffstat (limited to 'tests/sockbind.c')
-rw-r--r-- | tests/sockbind.c | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/tests/sockbind.c b/tests/sockbind.c deleted file mode 100644 index f98b5ed..0000000 --- a/tests/sockbind.c +++ /dev/null @@ -1,70 +0,0 @@ -#include <stdio.h> -#include <stddef.h> -#include <string.h> -#include <assert.h> -#include <unistd.h> -#include <sys/socket.h> -#include <sys/un.h> - -#define MAX_CLIENTS 1 -#ifdef DEBUG -#define DEBUGPRINT(fmt, ...) fprintf(stderr, "DEBUG: %s %s %d: " fmt, \ - __FILE__, __func__, __LINE__, __VA_ARGS__) -#else -#define DEBUGPRINT(...) (void)0 -#endif - -int main(int argc, char *argv[]){ - struct sockaddr_un sock = { - .sun_family = AF_UNIX - }; - int sfd; - if (argc < 1){ - fprintf(stderr, "Usage: %s PATH\n", argv[0]); - return 1; - } - strncpy(sock.sun_path, argv[1], sizeof(sock) - offsetof(struct sockaddr_un, sun_path)); - DEBUGPRINT("%s", "Constructed socket address\n"); - if ((sfd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1){ - perror("socket"); - return 2; - } - DEBUGPRINT("Created socket fd=%d\n", sfd); - if (bind(sfd, (struct sockaddr*)&sock, sizeof(sock)) == -1){ - perror("bind"); - return 3; - } - if (listen(sfd, MAX_CLIENTS) == -1){ - perror("listen"); - return 4; - } - DEBUGPRINT("Listening to %d clients\n", MAX_CLIENTS); - { - struct sockaddr_un client_address; - socklen_t client_size = sizeof(client_address); - int cfd; - while ((cfd = accept(sfd, (struct sockaddr*)&client_address, - &client_size)) != -1) { - char buf[BUFSIZ]; - ssize_t rdcount = -1; - DEBUGPRINT("Listening to client fd=%d\n", cfd); - while ((rdcount = read(cfd, buf, sizeof(buf))) > 0) { - DEBUGPRINT("Read %zi bytes from client, " - "message was:\n%.*s", rdcount, - rdcount, buf); - write(STDOUT_FILENO, buf, rdcount); - } - assert(rdcount == 0 || rdcount == -1); - if (rdcount == -1) { - perror("read"); - return 5; - } - DEBUGPRINT("Finished listening to fd=%d\n", cfd); - close(cfd); - } - } - - close(sfd); - unlink(argv[1]); - return 0; -} |