]> git.mdlowis.com Git - proto/aos.git/commitdiff
started implementing dial
authorMichael D. Lowis <mike.lowis@gentex.com>
Thu, 10 Dec 2020 19:27:08 +0000 (14:27 -0500)
committerMichael D. Lowis <mike.lowis@gentex.com>
Thu, 10 Dec 2020 19:27:08 +0000 (14:27 -0500)
bin/dial.c
inc/libnet.h
lib/net/netdial.c
tools/build.c

index 678ec59b2faeab8c86756617a49e8cece4f30981..3429c39b8daf6f62ec46a54d8e7d7b52fc583126 100644 (file)
@@ -3,7 +3,22 @@
 
 int main(int argc, char** argv)
 {
-    (void)argc;
-    (void)argv;
+    if (argc < 2)
+    {
+        fprintf(stderr, "usage: dial DIALSTR [CMD [ARG...]]\n");
+        return 1;
+    }
+
+    int fd = netdial(argv[1]);
+    if (argc > 2)
+    {
+        /* execute command with socket as stdio */
+    }
+    else
+    {
+        /* copy data to/from stdio */
+    }
+    close(fd);
+
     return 0;
 }
\ No newline at end of file
index d3e75a8fa1dd6afda0b7399baee50e4f0b64631e..c46afca1e0560d96ea2b732992b6cd9fd61ef65c 100644 (file)
@@ -15,3 +15,5 @@ struct in_addr netresolve(char *hostname);
 int netannounce(char* dialstr);
 int netlisten(int fd, int backlog);
 int netaccept(int fd);
+int netdial(char* dialstr);
+int enetdial(char* dialstr);
index e9544e2a7d1fd88da7973a7eff5b3dfccb9bb499..79a94faed6208cfa59ca892d5dd270d413c9cd8d 100644 (file)
@@ -1,22 +1,32 @@
 #include <liba.h>
 #include <libnet.h>
 
-//int netdial(char* dialstr)
-//{
-//    struct socket_t sock = { .fd = -1 };
-//    if (netsocket(dialstr, &sock))
-//    {
-//        int rv = -1;
-//        switch (sock.addr.in.sin_family)
-//        {
-//            case AF_INET:
-//                rv = bind(sock.fd, (struct sockaddr*)&sock.addr.in, sizeof(sock.addr.in));
-//                break;
-//
-//            case AF_UNIX:
-//                if (connect(sock.fd, (struct sockaddr*)&sock.addr.un, sizeof(sock.addr.un)) < 0)
-//                {
-//                    unlink(sock.addr.un.sun_path);
-//                    rv = bind(sock.fd, (struct sockaddr*)&sock.addr.un, sizeof(sock.addr.un));
-//                }
-//                break;
+int netdial(char* dialstr)
+{
+    int rv = -1;
+    struct socket_t sock = { .fd = -1 };
+    if (netsocket(dialstr, &sock))
+    {
+        switch (sock.addr.in.sin_family)
+        {
+            case AF_INET:
+                rv = connect(sock.fd, (struct sockaddr*)&sock.addr.in, sizeof(sock.addr.in));
+                break;
+
+            case AF_UNIX:
+                rv = connect(sock.fd, (struct sockaddr*)&sock.addr.un, sizeof(sock.addr.un));
+                break;
+        }
+    }
+    return (rv == 0 ? sock.fd : rv);
+}
+
+int enetdial(char* dialstr)
+{
+    int fd = -1;
+    if (netdial(dialstr) < 0)
+    {
+        fatal("netdial():");
+    }
+    return fd;
+}
index 3113703230a3e8467948b6559fc511bdc2c8346b..f163af61b11194f919e209914795a178602726f0 100644 (file)
@@ -18,7 +18,7 @@ typedef struct Target {
     void (*build)(struct Target*);
 } Target;
 
-int MaxJobs = 12;
+int MaxJobs = 1;
 
 char* CCCMD[] = {
     "cc",
@@ -50,8 +50,8 @@ char* LDCMD[] = {
 };
 
 char* LIBS[] = {
-    "-la",
     "-lnet",
+    "-la",
     "-lX11",
     "-lfontconfig",
     NULL