X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=bin%2Fnbp%2Fnbprgstr.c;h=ab041ba8458ec2d5c47093594bd932c752479359;hb=008eac9cd4113c38090c803b1236335158fcc64c;hp=a3c9d6ea66d6ba8edcb85be202b6b05bdd76a43f;hpb=59e06f3bc066c364d2f40aba49a915631ba68252;p=netatalk.git diff --git a/bin/nbp/nbprgstr.c b/bin/nbp/nbprgstr.c index a3c9d6ea..ab041ba8 100644 --- a/bin/nbp/nbprgstr.c +++ b/bin/nbp/nbprgstr.c @@ -1,13 +1,16 @@ /* + * $Id: nbprgstr.c,v 1.7 2009-10-14 01:38:28 didg Exp $ + * * Copyright (c) 1990,1993 Regents of The University of Michigan. * All Rights Reserved. See COPYRIGHT. */ #ifdef HAVE_CONFIG_H #include "config.h" -#endif +#endif /* HAVE_CONFIG_H */ #include +#include #include #include #include @@ -15,10 +18,11 @@ #include #include #include +#include #include +#include -Usage( av0 ) - char *av0; +static void Usage(char *av0) { char *p; @@ -28,24 +32,24 @@ Usage( av0 ) p++; } - fprintf( stderr, "Usage: %s [ -A address ] obj:type@zone\n", p ); + fprintf( stderr, "Usage: %s [ -A address ] [-m Mac charset] [ -p port] obj:type@zone\n", p ); exit( 1 ); } -main( ac, av ) - int ac; - char **av; +int main(int ac, char **av) { struct sockaddr_at addr; struct at_addr ataddr; char *Obj = 0, *Type = 0, *Zone = 0; + char *convname = 0; int s, c, port = 0; + charset_t chMac = CH_MAC; extern char *optarg; extern int optind; memset(&ataddr, 0, sizeof(ataddr)); - while (( c = getopt( ac, av, "p:A:" )) != EOF ) { + while (( c = getopt( ac, av, "p:A:m:" )) != EOF ) { switch ( c ) { case 'A': if (!atalk_aton(optarg, &ataddr)) { @@ -54,6 +58,13 @@ main( ac, av ) } break; + case 'm': + if ((charset_t)-1 == (chMac = add_charset(optarg)) ) { + fprintf(stderr, "Invalid Mac charset.\n"); + exit(1); + } + break; + case 'p' : port = atoi( optarg ); break; @@ -67,10 +78,15 @@ main( ac, av ) Usage( av[ 0 ] ); } + /* Convert the name */ + if ((size_t)(-1) == convert_string_allocate(CH_UNIX, chMac, + av[optind], strlen(av[optind]), &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 ] ); } @@ -90,4 +106,6 @@ main( ac, av ) exit( 1 ); } netddp_close(s); + + return 0; }