X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fatalk%2Futil.h;h=d6209ed93c86cf624ba3292c4cd98096cb3b8aab;hb=e83a5199e4f35ceea335dc3075b23e8d983e7642;hp=736fab22cd5fb1823e6e8b903001eca9c687ed3c;hpb=815d557e167e76015934397dffbfa869180dcdbc;p=netatalk.git diff --git a/include/atalk/util.h b/include/atalk/util.h index 736fab22..d6209ed9 100644 --- a/include/atalk/util.h +++ b/include/atalk/util.h @@ -1,5 +1,11 @@ -/* - * $Id: util.h,v 1.11 2009-10-13 22:55:37 didg Exp $ +/*! + * @file + * Netatalk utility functions + * + * Utility functions for these areas: \n + * * sockets \n + * * locking \n + * * misc UNIX function wrappers, eg for getcwd */ #ifndef _ATALK_UTIL_H @@ -18,8 +24,26 @@ #define EXITERR_CONF 2 /* error in config files/cmd line parameters */ #define EXITERR_SYS 3 /* local system error */ - -extern int sys_ftruncate (int fd, off_t length); +/* Print a SBT and exit */ +#define AFP_PANIC(why) \ + do { \ + netatalk_panic(why); \ + abort(); \ + } while(0); + +/* LOG assert errors */ +#ifndef NDEBUG +#define AFP_ASSERT(b) \ + do { \ + if (!(b)) { \ + AFP_PANIC(#b); \ + } \ + } while(0); +#else +#define AFP_ASSERT(b) +#endif /* NDEBUG */ + +#define STRCMP(a,b,c) (strcmp(a,c) b 0) #ifdef WITH_SENDFILE extern ssize_t sys_sendfile (int __out_fd, int __in_fd, off_t *__offset,size_t __count); @@ -36,17 +60,22 @@ extern int atalk_aton (char *, struct at_addr *); extern void bprint (char *, int); extern int strdiacasecmp (const char *, const char *); extern int strndiacasecmp (const char *, const char *, size_t); -extern pid_t server_lock (char * /*program*/, char * /*file*/, - int /*debug*/); +extern pid_t server_lock (char * /*program*/, char * /*file*/, int /*debug*/); extern void fault_setup (void (*fn)(void *)); +extern void netatalk_panic(const char *why); #define server_unlock(x) (unlink(x)) +/* strlcpy and strlcat are used by pam modules */ +#ifndef UAM_MODULE_EXPORT +#define UAM_MODULE_EXPORT +#endif + #ifndef HAVE_STRLCPY -size_t strlcpy (char *, const char *, size_t); +UAM_MODULE_EXPORT size_t strlcpy (char *, const char *, size_t); #endif #ifndef HAVE_STRLCAT -size_t strlcat (char *, const char *, size_t); +UAM_MODULE_EXPORT size_t strlcat (char *, const char *, size_t); #endif #ifndef HAVE_DLFCN_H @@ -81,74 +110,11 @@ extern void *mod_symbol (void *, const char *); #define mod_close(a) dlclose(a) #endif /* ! HAVE_DLFCN_H */ -#if 0 -/* volinfo for shell utilities */ -#define VOLINFOFILE ".volinfo" - -struct volinfo { - char *v_name; - char *v_path; - int v_flags; - int v_casefold; - char *v_cnidscheme; - char *v_dbpath; - char *v_volcodepage; - charset_t v_volcharset; - char *v_maccodepage; - charset_t v_maccharset; - int v_adouble; /* default adouble format */ - char *(*ad_path)(const char *, int); - char *v_dbd_host; - int v_dbd_port; -}; - -extern int loadvolinfo (char *path, struct volinfo *vol); -extern int vol_load_charsets ( struct volinfo *vol); -#endif /* 0 */ - -/* - * Function: lock_reg - * - * Purpose: lock a file with fctnl - * - * Arguments: - * - * fd (r) File descriptor - * cmd (r) cmd to fcntl, only F_SETLK is usable here - * type (r) F_RDLCK, F_WRLCK, F_UNLCK - * offset (r) byte offset relative to l_whence - * whence (r) SEEK_SET, SEEK_CUR, SEEK_END - * len (r) no. of bytes (0 means to EOF) - * - * Returns: 0 on success, -1 on failure - * fcntl return value and errno - * - * Effects: - * - * Function called by macros to ease locking. - */ -extern int lock_reg(int fd, int cmd, int type, off_t offest, int whence, off_t len); - -/* - * Macros: read_lock, write_lock, un_lock - * - * Purpose: lock and unlock files - * - * Arguments: - * - * fd (r) File descriptor - * offset (r) byte offset relative to l_whence - * whence (r) SEEK_SET, SEEK_CUR, SEEK_END - * len (r) no. of bytes (0 means to EOF) - * - * Returns: 0 on success, -1 on failure - * fcntl return value and errno - * - * Effects: - * - * Nice locking macros. - */ +/****************************************************************** + * locking.c + ******************************************************************/ +extern int lock_reg(int fd, int cmd, int type, off_t offest, int whence, off_t len); #define read_lock(fd, offset, whence, len) \ lock_reg((fd), F_SETLK, F_RDLCK, (offset), (whence), (len)) #define write_lock(fd, offset, whence, len) \ @@ -156,4 +122,23 @@ extern int lock_reg(int fd, int cmd, int type, off_t offest, int whence, off_t l #define unlock(fd, offset, whence, len) \ lock_reg((fd), F_SETLK, F_UNLCK, (offset), (whence), (len)) -#endif +/****************************************************************** + * socket.c + ******************************************************************/ + +extern int setnonblock(int fd, int cmd); +extern ssize_t readt(int socket, void *data, const size_t length, int setnonblocking, int timeout); +extern const char *getip_string(const struct sockaddr *sa); +extern unsigned int getip_port(const struct sockaddr *sa); +extern void apply_ip_mask(struct sockaddr *ai, int maskbits); +extern int compare_ip(const struct sockaddr *sa1, const struct sockaddr *sa2); + +/****************************************************************** + * unix.c + *****************************************************************/ + +extern const char *getcwdpath(void); +extern char *stripped_slashes_basename(char *p); +extern int lchdir(const char *dir); + +#endif /* _ATALK_UTIL_H */