Date: Sun, 5 Dec 2004 20:40:44 -0500 (EST) From: Craig Rodrigues <rodrigc@crodrigues.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: standards/74751: swab() should be declared in <unistd.h>, not <string.h> Message-ID: <200412060140.iB61eiUm032460@h00609772adf0.ne.client2.attbi.com> Resent-Message-ID: <200412060150.iB61oFPA033613@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 74751 >Category: standards >Synopsis: swab() should be declared in <unistd.h>, not <string.h> >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-standards >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Dec 06 01:50:15 GMT 2004 >Closed-Date: >Last-Modified: >Originator: Craig Rodrigues >Release: FreeBSD 6.0-CURRENT i386 >Organization: >Environment: System: FreeBSD dibbler.crodrigues.org 6.0-CURRENT FreeBSD 6.0-CURRENT #44: Sun Dec 5 14:16:56 EST 2004 rodrigc@dibbler.crodrigues.org:/usr/obj/usr/src/sys/MYKERNEL1 i386 >Description: I was trying to compile the ACE library, which follows the Single Unix Specification fairly closesly, and compilation failed because our swab() is declared in <string.h>, not in <unistd.h>. The prototype for swab() should be in <unistd.h>, not in <string.h>, according to: http://www.opengroup.org/onlinepubs/009695399/functions/swab.html >How-To-Repeat: >Fix: --- include/string.h.orig Sun Dec 5 20:24:50 2004 +++ include/string.h Sun Dec 5 20:34:09 2004 @@ -108,8 +108,13 @@ #endif size_t strxfrm(char * __restrict, const char * __restrict, size_t); #if __BSD_VISIBLE -void swab(const void *, void *, size_t); -#endif + +#ifndef _SWAB_DECLARED +#define _SWAB_DECLARED +void swab(const void * __restrict, void * __restrict, ssize_t); +#endif /* _SWAB_DECLARED */ + +#endif /* __BSD_VISIBLE */ __END_DECLS #endif /* _STRING_H_ */ --- include/unistd.h.orig Sun Dec 5 20:29:04 2004 +++ include/unistd.h Sun Dec 5 20:32:11 2004 @@ -436,7 +436,12 @@ int setpgrp(pid_t _pid, pid_t _pgrp); /* obsoleted by setpgid() */ int setregid(gid_t, gid_t); int setreuid(uid_t, uid_t); -/* void swab(const void * __restrict, void * __restrict, ssize_t); */ + +#ifndef _SWAB_DECLARED +#define _SWAB_DECLARED +void swab(const void * __restrict, void * __restrict, ssize_t); +#endif /* _SWAB_DECLARED */ + void sync(void); useconds_t ualarm(useconds_t, useconds_t); int usleep(useconds_t); --- lib/libc/string/swab.c.orig Sun Dec 5 20:21:03 2004 +++ lib/libc/string/swab.c Sun Dec 5 20:21:18 2004 @@ -40,7 +40,7 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD: src/lib/libc/string/swab.c,v 1.5 2002/08/30 20:33:05 robert Exp $"); -#include <string.h> +#include <unistd.h> void swab(const void * __restrict from, void * __restrict to, size_t len) --- lib/libc/string/swab.3.orig Sun Dec 5 20:22:22 2004 +++ lib/libc/string/swab.3 Sun Dec 5 20:23:46 2004 @@ -41,7 +41,7 @@ .Sh LIBRARY .Lb libc .Sh SYNOPSIS -.In string.h +.In unistd.h .Ft void .Fn swab "const void * restrict src" "void * restrict dst" "size_t len" .Sh DESCRIPTION >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200412060140.iB61eiUm032460>