X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fatalk%2Futil.h;h=0106db2fa48d5e9712af71f77d9135d74c20fe73;hb=5f5a1a34ccb8e8a74cb4f74e4b1a95cb4b22182b;hp=02a0cc6247be5ea49c4faa6338a906537772fa47;hpb=cd421780725e828fa6aba1b2eeb746c2f5e72b42;p=netatalk.git diff --git a/include/atalk/util.h b/include/atalk/util.h index 02a0cc62..0106db2f 100644 --- a/include/atalk/util.h +++ b/include/atalk/util.h @@ -1,5 +1,15 @@ /* - * $Id: util.h,v 1.16 2009-11-23 18:17:30 didg Exp $ + * $Id: util.h,v 1.20 2010-02-28 17:02:49 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 @@ -12,6 +22,7 @@ #endif /* HAVE_UNISTD_H */ #include #include +#include /* exit error codes */ #define EXITERR_CLNT 1 /* client related error */ @@ -88,49 +99,7 @@ extern void *mod_symbol (void *, const char *); * locking.c ******************************************************************/ -/* - * 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. - */ - #define read_lock(fd, offset, whence, len) \ lock_reg((fd), F_SETLK, F_RDLCK, (offset), (whence), (len)) #define write_lock(fd, offset, whence, len) \ @@ -138,101 +107,21 @@ 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 ******************************************************************/ -/* - * Function: setnonblock - * - * Purpose: set or unset non-blocking IO on a fd - * - * Arguments: - * - * fd (r) File descriptor - * cmd (r) 0: disable non-blocking IO, ie block - * <>0: enable non-blocking IO - * - * Returns: 0 on success, -1 on failure - * - * Effects: - * - * fd's file flags. - */ extern int setnonblock(int fd, int cmd); - -/* - * Function: getip_string - * - * Purpose: convert an IPv4 or IPv6 address to a static string using inet_ntop - * - * Arguments: - * - * sa (r) pointer to an struct sockaddr - * - * Returns: pointer to a static string cotaining the converted address as string. - * On error pointers to "0.0.0.0" or "::0" are returned. - * - * Effects: - * - * IPv6 mapped IPv4 addresses are returned as IPv4 addreses eg - * ::ffff:10.0.0.0 is returned as "10.0.0.0". - */ extern const char *getip_string(const struct sockaddr *sa); - -/* - * Function: getip_string - * - * Purpose: return port number from struct sockaddr - * - * Arguments: - * - * sa (r) pointer to an struct sockaddr - * - * Returns: port as unsigned int - * - * Effects: none. - */ extern unsigned int getip_port(const struct sockaddr *sa); - -/* - * Function: apply_ip_mask - * - * Purpose: apply netmask to IP (v4 or v6) - * - * Arguments: - * - * ai (rw) pointer to an struct sockaddr - * mask (r) number of maskbits - * - * Returns: void - * - * Effects: - * - * Modifies IP address in sa->sin[6]_addr-s[6]_addr. The caller is responsible - * for passing a value for mask that is sensible to the passed address, - * eg 0 <= mask <= 32 for IPv4 or 0<= mask <= 128 for IPv6. mask > 32 for - * IPv4 is treated as mask = 32, mask > 128 is set to 128 for IPv6. - */ extern void apply_ip_mask(struct sockaddr *ai, int maskbits); - -/* - * Function: compare_ip - * - * Purpose: Compare IP addresses for equality - * - * Arguments: - * - * sa1 (r) pointer to an struct sockaddr - * sa2 (r) pointer to an struct sockaddr - * - * Returns: Addresses are converted to strings and compared with strcmp and - * the result of strcmp is returned. - * - * Effects: - * - * IPv6 mapped IPv4 addresses are treated as IPv4 addresses. - */ extern int compare_ip(const struct sockaddr *sa1, const struct sockaddr *sa2); + +/****************************************************************** + * unix.c + *****************************************************************/ + +extern const char *getcwdpath(void); +extern int lchdir(struct vol *vol, const char *dir); + +#endif /* _ATALK_UTIL_H */