netatalk  4.4.0dev
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
Bug List
Global ad_open (struct adouble *ad, const char *path, int adflags,...)
on Solaris (HAVE_EAFD) ADFLAGS_RF doesn't work without ADFLAGS_HF, because it checks whether ad_meta_fileno() is already opened. As a workaround pass ADFLAGS_SETSHRMD.
Global ad_path (const char *path, int adflags)
should do something for pathname > MAXPATHLEN
Global afp_syncfork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
There is a lot to tell about fsync, fdatasync, F_FULLFSYNC. fsync(2) on OSX is implemented differently than on other platforms.
Global AFPopenLogin (CONN *conn, char *vers, char *uam, char *usr, char *pwd)
spec violation in netatalk FPlogout ==> dsiclose
Global check_dirent (const struct vol *, char *)
Doesn't work with dangling symlink i.e.:
  • Move a folder with a dangling symlink in the trash
  • empty the trash
Global convert_charset (charset_t from_set, charset_t to_set, charset_t cap_charset, const char *src, size_t src_len, char *dest, size_t dest_len, uint16_t *flags)
the size is a mess we really need a malloc/free logic
File desktop.c
afp_XXXcomment are (the only) functions able to open a resource fork when there's no data fork, e.g. after it was removed with samba.
Global make_log_entry (enum loglevels loglevel, enum logtypes logtype, const char *file, const bool log_us_timestamp, int line, char *message,...)
make_log_entry has 1 main flaw: The message in its entirety, must fit into the tempbuffer. So it must be shorter than MAXLOGSIZE
Global mangle (const struct vol *, char *, size_t, char *, cnid_t, int)

Early Mac OS X (10.0-10.4.?) had the limitation up to 255 Byte. Current implementation is: volcharset -> UTF16-MAC -> truncated 255 UTF8-MAC

Recent Mac OS X (10.4.?-) don't have this limitation. Desirable implementation is: volcharset -> truncated 510 UTF16-MAC -> UTF8-MAC

File printcap.c
Should use a "last" pointer in tbuf, so that searching for capabilities alphabetically would not be a n**2/2 process when large numbers of capabilities are given.
Global pull_charset_flags (charset_t from_set, charset_t to_set, charset_t cap_set, const char *src, size_t srclen, char *dest, size_t destlen, uint16_t *flags)
This will not work if the destination charset is not multibyte, i.e. UCS2->UCS2 will fail The (un)escape scheme is not compatible to the old cap style escape. This is bad, we need it for e.g. HFS cdroms.
Global push_charset_flags (charset_t to_set, charset_t cap_set, char *src, size_t srclen, char *dest, size_t destlen, uint16_t *flags)
CONV_IGNORE and CONV_ESCAPEHEX can't work together. Should we check this ? This will not work if the destination charset is not multibyte, i.e. UCS2->UCS2 will fail The escape scheme is not compatible to the old cap style escape. This is bad, we need it for e.g. HFS cdroms.