]> arthur.barton.de Git - netatalk.git/blobdiff - bin/nbp/nbpunrgstr.c
Big configure.in cleanup
[netatalk.git] / bin / nbp / nbpunrgstr.c
index f658e91293e1c66da6fde061390ee26b70f85fe4..a4a946530f21e7fe9de6d06e1aeccddbdc631d60 100644 (file)
@@ -1,4 +1,6 @@
 /*
+ * $Id: nbpunrgstr.c,v 1.10 2009-10-29 11:35:58 didg Exp $
+ *
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
  * All Rights Reserved.
  *
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
+#endif /* HAVE_CONFIG_H */
+
+#include <sys/types.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+#include <netatalk/endian.h>
+#include <netatalk/at.h>
+#include <atalk/util.h>
+#include <atalk/nbp.h>
 
-#include  <sys/types.h>
-#include  <netatalk/endian.h>
-#include  <netatalk/at.h>
-#include  <stdio.h>
-#include  <string.h>
+#include <atalk/unicode.h>
 
-Usage( av0 )
-    char       *av0;
+static void Usage(char *av0)
 {
     char       *p;
 
-    if (( p = strrchr( av0, '/' )) == 0 ) {
+    if (( p = strrchr( av0, '/' )) == NULL ) {
        p = av0;
     } else {
        p++;
     }
 
-    fprintf( stderr, "Usage: %s [ -A address ] obj:type@zone\n", p );
+    fprintf( stderr, "Usage: %s [ -A address ] [ -m Mac charset] obj:type@zone\n", p );
     exit( 1 );
 }
 
-main( ac, av )
-    int                ac;
-    char       **av;
+int main(int ac, char **av)
 {
-    char               *Obj = 0, *Type = 0, *Zone = 0;
+    char               *Obj = NULL, *Type = NULL, *Zone = NULL;
+    char               *convname = NULL;
     struct at_addr      addr;
     int                 c;
+    charset_t          chMac = CH_MAC;
 
     extern char                *optarg;
     extern int         optind;
     
     memset(&addr, 0, sizeof(addr));
-    while ((c = getopt(ac, av, "A:")) != EOF) {
+    while ((c = getopt(ac, av, "A:m:")) != EOF) {
       switch (c) {
       case 'A':
        if (!atalk_aton(optarg, &addr)) {
@@ -66,6 +75,13 @@ main( ac, av )
          exit(1);
        }
        break;
+      case 'm':
+        if ((charset_t)-1 == (chMac = add_charset(optarg)) ) {
+          fprintf(stderr, "Invalid Mac charset.\n");
+          exit(1);
+        }
+        break;
+
       default:
        Usage(av[0]);
        break;
@@ -76,10 +92,15 @@ main( ac, av )
        Usage( av[ 0 ] );
     }
 
+    /* Convert the name */
+    if ((size_t)(-1) == convert_string_allocate(CH_UNIX, chMac, 
+                        av[optind], -1, &convname))
+        convname = av[optind]; 
+
     /*
      * Get the name. If Type or Obj aren't specified, error.
      */
-    if ( nbp_name( av[optind], &Obj, &Type, &Zone ) || !Obj || !Type ) {
+    if ( nbp_name( convname, &Obj, &Type, &Zone ) || !Obj || !Type ) {
        Usage( av[ 0 ] );
     }
 
@@ -88,4 +109,6 @@ main( ac, av )
                Zone ? Zone : "*" );
        exit( 1 );
     }
+
+    return 0;
 }