AROS: Add an example for using the SYNC API to AROS
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Sat, 13 Apr 2013 15:01:05 +0000 (08:01 -0700)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Sat, 13 Apr 2013 15:01:05 +0000 (08:01 -0700)
While the ASYNC API is probably always preferable, the SYNC API is easier
to use.  The SYNC API is probably what most users want.

aros/Makefile.AROS
aros/aros_compat.c
examples/nfsclient-sync.c

index 54f724988eca5bbe6c133b28b04fb7f8f9b57d1f..9ad038c2858bdc5198e782bd0e62bfd7bbe4c9a3 100755 (executable)
@@ -10,7 +10,7 @@ OBJS+=portmap/portmap.o portmap/libnfs-raw-portmap.o
 OBJS+=rquota/rquota.o rquota/libnfs-raw-rquota.o
 OBJS+=aros/aros_compat.o
 
-EXAMPLES=examples/nfsclient-listservers
+EXAMPLES=examples/nfsclient-listservers examples/nfsclient-sync
 
 all: lib/libnfs.a $(EXAMPLES)
 
@@ -22,6 +22,8 @@ lib/libnfs.a: $(OBJS)
        $(CC) $(CFLAGS) -c -o $@ $<
 
 examples/nfsclient-listservers: examples/nfsclient-listservers.c lib/libnfs.a
+       $(CC) $(CFLAGS) -o $@ $< lib/libnfs.a
 
+examples/nfsclient-sync: examples/nfsclient-sync.c lib/libnfs.a
        $(CC) $(CFLAGS) -o $@ $< lib/libnfs.a
 
index 9a6cd3b385c3922c8451f4d3bf5e37b88fc38980..6419956ef62aa5d579f11e3923f37fe61b57fd83 100644 (file)
@@ -81,7 +81,7 @@ int aros_inet_pton(int af, char *src, void *dst)
   struct sockaddr_in sin;
 
   sin.sin_addr.s_addr = inet_addr(src);
-  memcpy(dst, &sin.sin_addr.s_addr, sizeof(sin.sin_addr,s_addr));
+  memcpy(dst, &sin.sin_addr.s_addr, sizeof(sin.sin_addr.s_addr));
   return 1;
 }
 
index e42214aab473c5b6d72bd338bb154ebeb2b72612..4bd2c0b942714b26d4c72ee8305842ecdec1b5f2 100644 (file)
  */
 #ifdef WIN32
 #include "win32_compat.h"
+#pragma comment(lib, "ws2_32.lib")
+WSADATA wsaData;
 #else
 #include <string.h>
 #include <fcntl.h>
 #include <sys/stat.h>
+#include <unistd.h>
+#ifndef AROS
 #include <sys/statvfs.h>
 #endif
-
-#if defined(WIN32)
-#pragma comment(lib, "ws2_32.lib")
-WSADATA wsaData;
-#else
-#include <sys/statvfs.h>
-#include <unistd.h>
 #endif
 
+#ifdef AROS
+#include "aros_compat.h"
+#endif
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
@@ -47,8 +47,6 @@ WSADATA wsaData;
 #include <fcntl.h>
 #include "libnfs-zdr.h"
 #include "libnfs.h"
-#include <rpc/rpc.h>            /* for authunix_create() */
-#include <popt.h>
 #include "libnfs-raw.h"
 #include "libnfs-raw-mount.h"
 
@@ -67,22 +65,6 @@ void print_usage(void)
        fprintf(stderr, "Usage: nfsclient-sync [-?|--help] [--usage] <url>\n");
 }
 
-void print_help(void)
-{
-       fprintf(stderr, "Usage: nfsclient-sync [OPTION...] <url>\n");
-       fprintf(stderr, "\n");
-       fprintf(stderr, "Help options:\n");
-       fprintf(stderr, "  -?, --help                        Show this help message\n");
-       fprintf(stderr, "      --usage                       Display brief usage message\n");
-       fprintf(stderr, "\n");
-       fprintf(stderr, "NFS URL format : nfs://<server>/<export-path>\n");
-       fprintf(stderr, "\n");
-       fprintf(stderr, "<host> is either of:\n");
-       fprintf(stderr, "  \"hostname\"       nfs.example\n");
-       fprintf(stderr, "  \"ipv4-address\"   10.1.1.27\n");
-       fprintf(stderr, "  \"ipv6-address\"   [fce0::1]\n");
-}
-
 int main(int argc, char *argv[])
 {
        struct nfs_context *nfs = NULL;
@@ -95,51 +77,21 @@ int main(int argc, char *argv[])
        struct nfsdirent *nfsdirent;
        struct statvfs svfs;
        exports export, tmp;
-       int show_help = 0, show_usage = 0;
-       poptContext pc;
-       const char **extra_argv;
-       int extra_argc = 0;
        const char *url = NULL;
        char *server = NULL, *path = NULL, *strp;
 
-       struct poptOption popt_options[] = {
-               { "help", '?', POPT_ARG_NONE, &show_help, 0, "Show this help message", NULL },
-               { "usage", 0, POPT_ARG_NONE, &show_usage, 0, "Display brief usage message", NULL },
-               POPT_TABLEEND
-       };
-
-#if defined(WIN32)
+#ifdef WIN32
        if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) {
                printf("Failed to start Winsock2\n");
                exit(10);
        }
 #endif
 
-       pc = poptGetContext(argv[0], argc, argv, popt_options, POPT_CONTEXT_POSIXMEHARDER);
-       if ((res = poptGetNextOpt(pc)) < -1) {
-               fprintf(stderr, "Failed to parse option : %s %s\n",
-                       poptBadOption(pc, 0), poptStrerror(res));
-               exit(10);
-       }
-       extra_argv = poptGetArgs(pc);
-       if (extra_argv) {
-               url = *extra_argv;
-               extra_argv++;
-               while (extra_argv[extra_argc]) {
-                       extra_argc++;
-               }
-       }
-       poptFreeContext(pc);
-
-       if (show_help != 0) {
-               print_help();
-               exit(0);
-       }
+#ifdef AROS
+       aros_init_socket();
+#endif
 
-       if (show_usage != 0) {
-               print_usage();
-               exit(0);
-       }
+       url = argv[1];
 
        if (url == NULL) {
                fprintf(stderr, "No URL specified.\n");