diff --git a/libisofs/aaip-os-freebsd.c b/libisofs/aaip-os-freebsd.c index 0c870cb..692d804 100644 --- a/libisofs/aaip-os-freebsd.c +++ b/libisofs/aaip-os-freebsd.c @@ -16,6 +16,11 @@ #include #include +#ifndef Libisofs_with_aaip_acL +/* It seems ACL is fixely integrated in FreeBSD libc. There is no libacl. */ +#define Libisofs_with_aaip_acL yes +#endif + #ifdef Libisofs_with_aaip_acL #include #endif @@ -140,6 +145,7 @@ int aaip_get_attr_list(char *path, size_t *num_attrs, char ***names, *value_lengths= NULL; *values= NULL; + num_names= 0; if(flag & 1) num_names++; if(num_names == 0) diff --git a/libisofs/aaip_0_2.c b/libisofs/aaip_0_2.c index ea3d038..dcd2aea 100644 --- a/libisofs/aaip_0_2.c +++ b/libisofs/aaip_0_2.c @@ -299,7 +299,7 @@ static ssize_t aaip_encode_acl_text(char *acl_text, mode_t st_mode, size_t result_size, unsigned char *result, int flag) { char *rpt, *npt, *cpt; - int qualifier= 0, perms, type, i, qualifier_len= 0, num_recs, needed; + int qualifier= 0, perms, type, i, qualifier_len= 0, num_recs, needed= 0; unsigned int has_u= 0, has_g= 0, has_o= 0, has_m= 0, is_trivial= 1; uid_t uid, huid; gid_t gid, hgid; diff --git a/libisofs/util.c b/libisofs/util.c index d28df37..f928212 100644 --- a/libisofs/util.c +++ b/libisofs/util.c @@ -13,7 +13,6 @@ #include #include -#include #include #include #include @@ -31,6 +30,51 @@ #include #endif + +/* ts A901203 */ +/* A dummy non-implementation of iconv API as used by libisofs. + Needed for FreeBSD experiments on a slightly misconfigured public server. + #define Libisofs_iconv_dummY yes +*/ +#ifdef Libisofs_iconv_dummY + +typedef int iconv_t; + +static +iconv_t iconv_open(const char *tocode, const char *fromcode) +{ + return (iconv_t)(999); +} +static +size_t iconv(iconv_t cd, + char **inbuf, size_t *inbytesleft, + char **outbuf, size_t *outbytesleft) +{ + size_t todo; + + todo = *inbytesleft; + if (todo > *outbytesleft) + todo = *outbytesleft; + memcpy(*outbuf, *inbuf, todo); + *outbytesleft -= todo; + *outbuf += todo; + *inbuf -= todo; + *inbytesleft = 0; + return todo; +} +static +int iconv_close(iconv_t cd) +{ + return 0; +} + +#else /* Libisofs_iconv_dummY */ + +#include + +#endif /* ! Libisofs_iconv_dummY */ + + int int_pow(int base, int power) { int result = 1;