/*
- * $Id: nbpunrgstr.c,v 1.4 2001-06-29 14:14:46 rufustfirefly Exp $
+ * $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.
#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 <atalk/util.h>
#include <atalk/nbp.h>
-void Usage( av0 )
- char *av0;
+#include <atalk/unicode.h>
+
+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 );
}
-int 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)) {
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;
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 ] );
}