From f982bbaa79b0038bc1b4f9f9d419361a63c2b284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralf=20Cors=C3=A9pius?= Date: Tue, 11 Sep 2007 16:48:54 +0200 Subject: Remove splint tags. --- rpmio/rpmio.h | 369 +++++++++++++++------------------------------------------- 1 file changed, 93 insertions(+), 276 deletions(-) (limited to 'rpmio/rpmio.h') diff --git a/rpmio/rpmio.h b/rpmio/rpmio.h index 50366786e..cb0c40f6e 100644 --- a/rpmio/rpmio.h +++ b/rpmio/rpmio.h @@ -9,20 +9,18 @@ #include #include #include -/*@-noparams@*/ #include "glob.h" -/*@=noparams@*/ #include #include #include /** */ -typedef /*@abstract@*/ struct pgpDig_s * pgpDig; +typedef struct pgpDig_s * pgpDig; /** */ -typedef /*@abstract@*/ struct pgpDigParams_s * pgpDigParams; +typedef struct pgpDigParams_s * pgpDigParams; /** \ingroup rpmio * Hide libio API lossage. @@ -30,7 +28,6 @@ typedef /*@abstract@*/ struct pgpDigParams_s * pgpDigParams; * argument as a pointer rather than as an off_t. The snarl below defines * typedefs to isolate the lossage. */ -/*@{*/ #if defined(__GLIBC__) && \ (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) #define USE_COOKIE_SEEK_POINTER 1 @@ -40,15 +37,14 @@ typedef _libio_off_t * _libio_pos_t; typedef off_t _libio_off_t; typedef off_t _libio_pos_t; #endif -/*@}*/ /** \ingroup rpmio */ -typedef /*@abstract@*/ /*@refcounted@*/ struct _FD_s * FD_t; +typedef struct _FD_s * FD_t; /** \ingroup rpmio */ -typedef /*@observer@*/ struct FDIO_s * FDIO_t; +typedef struct FDIO_s * FDIO_t; #ifdef __cplusplus extern "C" { @@ -57,146 +53,98 @@ extern "C" { /** \ingroup rpmio * \name RPMIO Vectors. */ -/*@{*/ /** */ -typedef ssize_t (*fdio_read_function_t) (void *cookie, char *buf, size_t nbytes) - /*@globals errno, fileSystem @*/ - /*@modifies *cookie, errno, fileSystem @*/ - /*@requires maxSet(buf) >= (nbytes - 1) @*/ - /*@ensures maxRead(buf) == result @*/ ; +typedef ssize_t (*fdio_read_function_t) (void *cookie, char *buf, size_t nbytes); /** */ -typedef ssize_t (*fdio_write_function_t) (void *cookie, const char *buf, size_t nbytes) - /*@globals errno, fileSystem @*/ - /*@modifies *cookie, errno, fileSystem @*/; +typedef ssize_t (*fdio_write_function_t) (void *cookie, const char *buf, size_t nbytes); /** */ -typedef int (*fdio_seek_function_t) (void *cookie, _libio_pos_t pos, int whence) - /*@globals errno, fileSystem @*/ - /*@modifies *cookie, errno, fileSystem @*/; +typedef int (*fdio_seek_function_t) (void *cookie, _libio_pos_t pos, int whence); /** */ -typedef int (*fdio_close_function_t) (void *cookie) - /*@globals errno, fileSystem, systemState @*/ - /*@modifies *cookie, errno, fileSystem, systemState @*/; +typedef int (*fdio_close_function_t) (void *cookie); /** */ -typedef /*@only@*/ /*@null@*/ FD_t (*fdio_ref_function_t) ( /*@only@*/ void * cookie, - const char * msg, const char * file, unsigned line) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +typedef FD_t (*fdio_ref_function_t) ( void * cookie, + const char * msg, const char * file, unsigned line); /** */ -typedef /*@only@*/ /*@null@*/ FD_t (*fdio_deref_function_t) ( /*@only@*/ FD_t fd, - const char * msg, const char * file, unsigned line) - /*@globals fileSystem @*/ - /*@modifies fd, fileSystem @*/; +typedef FD_t (*fdio_deref_function_t) ( FD_t fd, + const char * msg, const char * file, unsigned line); /** */ -typedef /*@only@*/ /*@null@*/ FD_t (*fdio_new_function_t) (const char * msg, - const char * file, unsigned line) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +typedef FD_t (*fdio_new_function_t) (const char * msg, + const char * file, unsigned line); /** */ -typedef int (*fdio_fileno_function_t) (void * cookie) - /*@globals fileSystem @*/ - /*@modifies *cookie, fileSystem @*/; +typedef int (*fdio_fileno_function_t) (void * cookie); /** */ -typedef FD_t (*fdio_open_function_t) (const char * path, int flags, mode_t mode) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +typedef FD_t (*fdio_open_function_t) (const char * path, int flags, mode_t mode); /** */ -typedef FD_t (*fdio_fopen_function_t) (const char * path, const char * fmode) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +typedef FD_t (*fdio_fopen_function_t) (const char * path, const char * fmode); /** */ -typedef void * (*fdio_ffileno_function_t) (FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +typedef void * (*fdio_ffileno_function_t) (FD_t fd); /** */ -typedef int (*fdio_fflush_function_t) (FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; -/*@}*/ +typedef int (*fdio_fflush_function_t) (FD_t fd); /** \ingroup rpmrpc * \name RPMRPC Vectors. */ -/*@{*/ /** */ -typedef int (*fdio_mkdir_function_t) (const char * path, mode_t mode) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +typedef int (*fdio_mkdir_function_t) (const char * path, mode_t mode); /** */ -typedef int (*fdio_chdir_function_t) (const char * path) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +typedef int (*fdio_chdir_function_t) (const char * path); /** */ -typedef int (*fdio_rmdir_function_t) (const char * path) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +typedef int (*fdio_rmdir_function_t) (const char * path); /** */ -typedef int (*fdio_rename_function_t) (const char * oldpath, const char * newpath) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +typedef int (*fdio_rename_function_t) (const char * oldpath, const char * newpath); /** */ -typedef int (*fdio_unlink_function_t) (const char * path) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; -/*@-typeuse@*/ +typedef int (*fdio_unlink_function_t) (const char * path); /** */ -typedef int (*fdio_stat_function_t) (const char * path, /*@out@*/ struct stat * st) - /*@globals errno, fileSystem @*/ - /*@modifies *st, errno, fileSystem @*/; +typedef int (*fdio_stat_function_t) (const char * path, struct stat * st); /** */ -typedef int (*fdio_lstat_function_t) (const char * path, /*@out@*/ struct stat * st) - /*@globals errno, fileSystem @*/ - /*@modifies *st, errno, fileSystem @*/; +typedef int (*fdio_lstat_function_t) (const char * path, struct stat * st); /** */ -typedef int (*fdio_access_function_t) (const char * path, int amode) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; -/*@=typeuse@*/ -/*@}*/ +typedef int (*fdio_access_function_t) (const char * path, int amode); /** \ingroup rpmio @@ -228,331 +176,225 @@ struct FDIO_s { /** \ingroup rpmio * \name RPMIO Interface. */ -/*@{*/ /** * strerror(3) clone. */ -/*@observer@*/ const char * Fstrerror(/*@null@*/ FD_t fd) - /*@*/; +const char * Fstrerror(FD_t fd); /** * fread(3) clone. */ -/*@-incondefs@*/ -ssize_t Fread(/*@out@*/ void * buf, size_t size, size_t nmemb, FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fd, *buf, fileSystem @*/ - /*@requires maxSet(buf) >= (nmemb - 1) @*/ - /*@ensures maxRead(buf) == result @*/; -/*@=incondefs@*/ +ssize_t Fread(void * buf, size_t size, size_t nmemb, FD_t fd); /** * fwrite(3) clone. */ -/*@-incondefs@*/ -ssize_t Fwrite(const void * buf, size_t size, size_t nmemb, FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fd, fileSystem @*/ - /*@requires maxRead(buf) >= nmemb @*/; -/*@=incondefs@*/ +ssize_t Fwrite(const void * buf, size_t size, size_t nmemb, FD_t fd); /** * fseek(3) clone. */ -int Fseek(FD_t fd, _libio_off_t offset, int whence) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +int Fseek(FD_t fd, _libio_off_t offset, int whence); /** * fclose(3) clone. */ -int Fclose( /*@killref@*/ FD_t fd) - /*@globals fileSystem, internalState @*/ - /*@modifies fd, fileSystem, internalState @*/; +int Fclose( FD_t fd); /** */ -/*@null@*/ FD_t Fdopen(FD_t ofd, const char * fmode) - /*@globals fileSystem @*/ - /*@modifies ofd, fileSystem @*/; +FD_t Fdopen(FD_t ofd, const char * fmode); /** * fopen(3) clone. */ -/*@null@*/ FD_t Fopen(/*@null@*/ const char * path, - /*@null@*/ const char * fmode) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +FD_t Fopen(const char * path, + const char * fmode); /** * fflush(3) clone. */ -int Fflush(/*@null@*/ FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fd, fileSystem @*/; +int Fflush(FD_t fd); /** * ferror(3) clone. */ -int Ferror(/*@null@*/ FD_t fd) - /*@*/; +int Ferror(FD_t fd); /** * fileno(3) clone. */ -int Fileno(FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fileSystem@*/; +int Fileno(FD_t fd); /** * fcntl(2) clone. */ -/*@unused@*/ -int Fcntl(FD_t fd, int op, void *lip) - /*@globals errno, fileSystem @*/ - /*@modifies fd, *lip, errno, fileSystem @*/; +int Fcntl(FD_t fd, int op, void *lip); -/*@}*/ /** \ingroup rpmrpc * \name RPMRPC Interface. */ -/*@{*/ /** * mkdir(2) clone. */ -int Mkdir(const char * path, mode_t mode) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies errno, fileSystem, internalState @*/; +int Mkdir(const char * path, mode_t mode); /** * chdir(2) clone. */ -int Chdir(const char * path) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies errno, fileSystem, internalState @*/; +int Chdir(const char * path); /** * rmdir(2) clone. */ -int Rmdir(const char * path) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies errno, fileSystem, internalState @*/; +int Rmdir(const char * path); /** * rename(2) clone. */ -int Rename(const char * oldpath, const char * newpath) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies errno, fileSystem, internalState @*/; +int Rename(const char * oldpath, const char * newpath); /** * link(2) clone. */ -int Link(const char * oldpath, const char * newpath) - /*@globals errno, fileSystem, internalState @*/ - /*@modifies errno, fileSystem, internalState @*/; +int Link(const char * oldpath, const char * newpath); /** * unlink(2) clone. */ -int Unlink(const char * path) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies errno, fileSystem, internalState @*/; +int Unlink(const char * path); /** * readlink(2) clone. */ -/*@-incondefs@*/ -int Readlink(const char * path, /*@out@*/ char * buf, size_t bufsiz) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies *buf, errno, fileSystem, internalState @*/ - /*@requires maxSet(buf) >= (bufsiz - 1) @*/ - /*@ensures maxRead(buf) <= bufsiz @*/; -/*@=incondefs@*/ +int Readlink(const char * path, char * buf, size_t bufsiz); /** * stat(2) clone. */ -int Stat(const char * path, /*@out@*/ struct stat * st) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies *st, errno, fileSystem, internalState @*/; +int Stat(const char * path, struct stat * st); /** * lstat(2) clone. */ -int Lstat(const char * path, /*@out@*/ struct stat * st) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies *st, errno, fileSystem, internalState @*/; +int Lstat(const char * path, struct stat * st); /** * access(2) clone. */ -int Access(const char * path, int amode) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +int Access(const char * path, int amode); /** * glob_pattern_p(3) clone. */ -int Glob_pattern_p (const char *pattern, int quote) - /*@*/; +int Glob_pattern_p (const char *pattern, int quote); /** * glob_error(3) clone. */ -int Glob_error(const char * epath, int eerrno) - /*@*/; +int Glob_error(const char * epath, int eerrno); /** * glob(3) clone. */ int Glob(const char * pattern, int flags, int errfunc(const char * epath, int eerrno), - /*@out@*/ glob_t * pglob) - /*@globals fileSystem @*/ - /*@modifies *pglob, fileSystem @*/; + glob_t * pglob); /** * globfree(3) clone. */ -void Globfree( /*@only@*/ glob_t * pglob) - /*@globals fileSystem @*/ - /*@modifies *pglob, fileSystem @*/; +void Globfree( glob_t * pglob); /** * opendir(3) clone. */ -/*@null@*/ -DIR * Opendir(const char * path) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies errno, fileSystem, internalState @*/; +DIR * Opendir(const char * path); /** * readdir(3) clone. */ -/*@dependent@*/ /*@null@*/ -struct dirent * Readdir(DIR * dir) - /*@globals errno, fileSystem @*/ - /*@modifies *dir, errno, fileSystem @*/; +struct dirent * Readdir(DIR * dir); /** * closedir(3) clone. */ -int Closedir(/*@only@*/ DIR * dir) - /*@globals errno, fileSystem @*/ - /*@modifies *dir, errno, fileSystem @*/; +int Closedir(DIR * dir); -/*@}*/ /** \ingroup rpmio * \name RPMIO Utilities. */ -/*@{*/ /** */ -off_t fdSize(FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fd, fileSystem@*/; +off_t fdSize(FD_t fd); /** */ -/*@null@*/ FD_t fdDup(int fdno) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +FD_t fdDup(int fdno); #ifdef UNUSED -/*@null@*/ FILE *fdFdopen( /*@only@*/ void * cookie, const char * mode); +FILE *fdFdopen( void * cookie, const char * mode); #endif /* XXX Legacy interfaces needed by gnorpm, rpmfind et al */ -/*@-exportlocal@*/ /** */ #ifndef H_RPMIO_INTERNAL /* XXX avoid gcc warning */ -/*@unused@*/ int fdFileno(void * cookie) - /*@*/; +int fdFileno(void * cookie); #define fdFileno(_fd) fdio->_fileno(_fd) #endif /** */ -/*@null@*/ FD_t fdOpen(const char *path, int flags, mode_t mode) - /*@globals errno, fileSystem, internalState @*/ - /*@modifies errno, fileSystem, internalState @*/; +FD_t fdOpen(const char *path, int flags, mode_t mode); #define fdOpen(_path, _flags, _mode) fdio->_open((_path), (_flags), (_mode)) /** */ -/*@-incondefs@*/ -ssize_t fdRead(void * cookie, /*@out@*/ char * buf, size_t count) - /*@globals errno, fileSystem, internalState @*/ - /*@modifies *cookie, *buf, errno, fileSystem, internalState @*/ - /*@requires maxSet(buf) >= (count - 1) @*/ - /*@ensures maxRead(buf) == result @*/ ; +ssize_t fdRead(void * cookie, char * buf, size_t count); #define fdRead(_fd, _buf, _count) fdio->read((_fd), (_buf), (_count)) -/*@=incondefs@*/ /** */ -ssize_t fdWrite(void * cookie, const char * buf, size_t count) - /*@globals errno, fileSystem, internalState @*/ - /*@modifies *cookie, errno, fileSystem, internalState @*/; +ssize_t fdWrite(void * cookie, const char * buf, size_t count); #define fdWrite(_fd, _buf, _count) fdio->write((_fd), (_buf), (_count)) /** */ -int fdClose( /*@only@*/ void * cookie) - /*@globals errno, fileSystem, systemState, internalState @*/ - /*@modifies *cookie, errno, fileSystem, systemState, internalState @*/; +int fdClose( void * cookie); #define fdClose(_fd) fdio->close(_fd) /** */ -/*@unused@*/ -/*@only@*/ /*@null@*/ -FD_t fdLink (/*@only@*/ void * cookie, const char * msg) - /*@globals fileSystem @*/ - /*@modifies *cookie, fileSystem @*/; +FD_t fdLink (void * cookie, const char * msg); #define fdLink(_fd, _msg) fdio->_fdref(_fd, _msg, __FILE__, __LINE__) /** */ -/*@unused@*/ -/*@only@*/ /*@null@*/ -FD_t fdFree(/*@only@*/ FD_t fd, const char * msg) - /*@globals fileSystem @*/ - /*@modifies fd, fileSystem @*/; +FD_t fdFree(FD_t fd, const char * msg); #define fdFree(_fd, _msg) fdio->_fdderef(_fd, _msg, __FILE__, __LINE__) /** */ -/*@unused@*/ -/*@only@*/ /*@null@*/ -FD_t fdNew (const char * msg) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +FD_t fdNew (const char * msg); #define fdNew(_msg) fdio->_fdnew(_msg, __FILE__, __LINE__) /** */ -int fdWritable(FD_t fd, int secs) - /*@globals errno, fileSystem @*/ - /*@modifies fd, errno, fileSystem @*/; +int fdWritable(FD_t fd, int secs); /** */ -int fdReadable(FD_t fd, int secs) - /*@globals errno @*/ - /*@modifies fd, errno @*/; -/*@=exportlocal@*/ +int fdReadable(FD_t fd, int secs); /** * Insure that directories in path exist, creating as needed. @@ -562,14 +404,11 @@ int fdReadable(FD_t fd, int secs) * @param gid directory uid (if created), or -1 to skip * @return 0 on success, errno (or -1) on error */ -int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid); /** * FTP and HTTP error codes. */ -/*@-typeuse@*/ typedef enum ftperrCode_e { FTPERR_NE_ERROR = -1, /*!< Generic error. */ FTPERR_NE_LOOKUP = -2, /*!< Hostname lookup failed. */ @@ -594,116 +433,94 @@ typedef enum ftperrCode_e { FTPERR_NIC_ABORT_IN_PROGRESS= -91, /*!< Abort in progress */ FTPERR_UNKNOWN = -100 /*!< Unknown or unexpected error */ } ftperrCode; -/*@=typeuse@*/ /** */ -/*@-redecl@*/ -/*@observer@*/ const char * ftpStrerror(int errorNumber) - /*@*/; -/*@=redecl@*/ +const char * ftpStrerror(int errorNumber); /** */ -/*@unused@*/ -/*@dependent@*/ /*@null@*/ void * ufdGetUrlinfo(FD_t fd) - /*@modifies fd @*/; +void * ufdGetUrlinfo(FD_t fd); /** */ -/*@-redecl@*/ -/*@unused@*/ -/*@observer@*/ const char * urlStrerror(const char * url) - /*@globals h_errno, internalState @*/ - /*@modifies internalState @*/; -/*@=redecl@*/ +const char * urlStrerror(const char * url); /** */ -/*@-exportlocal@*/ -int ufdCopy(FD_t sfd, FD_t tfd) - /*@globals fileSystem @*/ - /*@modifies sfd, tfd, fileSystem @*/; -/*@=exportlocal@*/ +int ufdCopy(FD_t sfd, FD_t tfd); /** */ -int ufdGetFile( /*@killref@*/ FD_t sfd, FD_t tfd) - /*@globals fileSystem, internalState @*/ - /*@modifies sfd, tfd, fileSystem, internalState @*/; +int ufdGetFile( FD_t sfd, FD_t tfd); /** */ -/*@unused@*/ int timedRead(FD_t fd, /*@out@*/ void * bufptr, int length) - /*@globals fileSystem @*/ - /*@modifies fd, *bufptr, fileSystem @*/; +int timedRead(FD_t fd, void * bufptr, int length); #define timedRead (ufdio->read) -/*@-exportlocal@*/ /** */ -/*@observer@*/ /*@unchecked@*/ extern FDIO_t fdio; +extern FDIO_t fdio; /** */ -/*@observer@*/ /*@unchecked@*/ extern FDIO_t fpio; +extern FDIO_t fpio; /** */ -/*@observer@*/ /*@unchecked@*/ extern FDIO_t ufdio; +extern FDIO_t ufdio; /** */ -/*@observer@*/ /*@unchecked@*/ extern FDIO_t gzdio; +extern FDIO_t gzdio; /** */ -/*@observer@*/ /*@unchecked@*/ extern FDIO_t bzdio; +extern FDIO_t bzdio; /** */ -/*@observer@*/ /*@unchecked@*/ extern FDIO_t fadio; -/*@=exportlocal@*/ -/*@}*/ +extern FDIO_t fadio; -/*@unused@*/ static inline int xislower(int c) /*@*/ { +static inline int xislower(int c) { return (c >= 'a' && c <= 'z'); } -/*@unused@*/ static inline int xisupper(int c) /*@*/ { +static inline int xisupper(int c) { return (c >= 'A' && c <= 'Z'); } -/*@unused@*/ static inline int xisalpha(int c) /*@*/ { +static inline int xisalpha(int c) { return (xislower(c) || xisupper(c)); } -/*@unused@*/ static inline int xisdigit(int c) /*@*/ { +static inline int xisdigit(int c) { return (c >= '0' && c <= '9'); } -/*@unused@*/ static inline int xisalnum(int c) /*@*/ { +static inline int xisalnum(int c) { return (xisalpha(c) || xisdigit(c)); } -/*@unused@*/ static inline int xisblank(int c) /*@*/ { +static inline int xisblank(int c) { return (c == ' ' || c == '\t'); } -/*@unused@*/ static inline int xisspace(int c) /*@*/ { +static inline int xisspace(int c) { return (xisblank(c) || c == '\n' || c == '\r' || c == '\f' || c == '\v'); } -/*@unused@*/ static inline int xtolower(int c) /*@*/ { +static inline int xtolower(int c) { return ((xisupper(c)) ? (c | ('a' - 'A')) : c); } -/*@unused@*/ static inline int xtoupper(int c) /*@*/ { +static inline int xtoupper(int c) { return ((xislower(c)) ? (c & ~('a' - 'A')) : c); } /** \ingroup rpmio * Locale insensitive strcasecmp(3). */ -int xstrcasecmp(const char * s1, const char * s2) /*@*/; +int xstrcasecmp(const char * s1, const char * s2) ; /** \ingroup rpmio * Locale insensitive strncasecmp(3). */ -int xstrncasecmp(const char *s1, const char * s2, size_t n) /*@*/; +int xstrncasecmp(const char *s1, const char * s2, size_t n) ; #ifdef __cplusplus } -- cgit v1.2.3