X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=bin%2Funiconv%2Funiconv.c;h=93439cefa965efae35bab8255d0c97d7d1f04780;hb=f254fd618b53e97cc5382b23709d4f3de1e70b41;hp=60b12e7182133674646b4e794d7bf9fff76f5ac7;hpb=6590d40ae8032ad963288710c826a068039525c3;p=netatalk.git diff --git a/bin/uniconv/uniconv.c b/bin/uniconv/uniconv.c index 60b12e71..93439cef 100644 --- a/bin/uniconv/uniconv.c +++ b/bin/uniconv/uniconv.c @@ -35,10 +35,13 @@ #include #include #include +#include + #include #include #include #include +#include #include "atalk/cnid.h" #ifndef MAXPATHLEN @@ -57,7 +60,7 @@ char* to_charset; static charset_t ch_mac; char* mac_charset; static int usedots = 0; -static u_int16_t conv_flags = 0; +static uint16_t conv_flags = 0; static int dry_run = 0; static int verbose=0; char *cnid_type; @@ -142,15 +145,15 @@ static int do_rename( char* src, char *dst, struct stat *st) static char *convert_name(char *name, struct stat *st, cnid_t cur_did) { - static char buffer[MAXPATHLEN]; + static char buffer[MAXPATHLEN +2]; /* for convert_charset dest_len parameter +2 */ size_t outlen = 0; unsigned char *p,*q; int require_conversion = 0; - u_int16_t flags = conv_flags; + uint16_t flags = conv_flags; cnid_t id; - p = name; - q = buffer; + p = (unsigned char *)name; + q = (unsigned char *)buffer; /* optimize for ascii case */ while (*p != 0) { @@ -168,17 +171,17 @@ static char *convert_name(char *name, struct stat *st, cnid_t cur_did) } /* convert charsets */ - q=buffer; - p=name; + q=(unsigned char *)buffer; + p=(unsigned char *)name; - outlen = convert_charset(ch_from, ch_to, ch_mac, p, strlen(p), q, sizeof(buffer), &flags); + outlen = convert_charset(ch_from, ch_to, ch_mac, (char *)p, strlen((char *)p), (char *)q, sizeof(buffer) -2, &flags); if ((size_t)-1 == outlen) { if ( ch_to == CH_UTF8) { /* maybe name is already in UTF8? */ flags = conv_flags; - q = (char*) buffer; - p = name; - outlen = convert_charset(ch_to, ch_to, ch_mac, p, strlen(p), q, sizeof(buffer), &flags); + q = (unsigned char *)buffer; + p = (unsigned char *)name; + outlen = convert_charset(ch_to, ch_to, ch_mac, (char *)p, strlen((char *)p), (char *)q, sizeof(buffer) -2, &flags); if ((size_t)-1 == outlen) { /* it's not UTF8... */ fprintf(stderr, "ERROR: conversion from '%s' to '%s' for '%s' in DID %u failed!!!\n", @@ -386,7 +389,7 @@ static int init(char* path) { DIR* startdir; - if (NULL == (cdb = cnid_open (path, 0, cnid_type, 0)) ) { + if (NULL == (cdb = cnid_open (path, 0, cnid_type, 0, "localhost", "4700", NULL, NULL)) ) { fprintf (stderr, "ERROR: cannot open CNID database in '%s'\n", path); fprintf (stderr, "ERROR: check the logs for reasons, aborting\n"); return -1; @@ -411,12 +414,12 @@ static void usage( char * name ) exit( 1 ); } -static void print_version () +static void print_version (void) { fprintf( stderr, "uniconv - Netatalk %s\n", VERSION ); } -static void help () +static void help (void) { fprintf (stdout, "\nuniconv, a tool to convert between various Netatalk volume encodings\n"); fprintf (stdout, "\nUsage: uniconv [-ndv] -c cnid -f fromcode -t tocode [-m maccode] path\n\n"); @@ -459,7 +462,7 @@ int main(int argc, char *argv[]) setlinebuf(stdout); #endif - while ((c = getopt (argc, argv, "f:m:t:c:nvVh")) != -1) + while ((c = getopt (argc, argv, "f:m:t:c:dnvVh")) != -1) switch (c) { case 'f': @@ -472,7 +475,7 @@ int main(int argc, char *argv[]) mac_charset = strdup(optarg); break; case 'd': - conv_flags &= !CONV_ESCAPEDOTS; + conv_flags &= ~CONV_ESCAPEDOTS; usedots = 1; break; case 'n':