# HG changeset patch # User John W. Eaton # Date 1295003931 18000 # Node ID bd6e37860be57134ed556ecbcf885395ad2fbed2 # Parent fd0a3ac60b0e26ab9dc5ac6d4a961e370715f5b6 use gnulib filemode module diff -r fd0a3ac60b0e -r bd6e37860be5 ChangeLog --- a/ChangeLog Fri Jan 14 05:47:45 2011 -0500 +++ b/ChangeLog Fri Jan 14 06:18:51 2011 -0500 @@ -1,3 +1,7 @@ +2011-01-14 John W. Eaton + + * bootstrap.conf (gnulib_modules): Include filemode in the list. + 2011-01-14 John W. Eaton * Update copyright notices for 2011. diff -r fd0a3ac60b0e -r bd6e37860be5 bootstrap.conf --- a/bootstrap.conf Fri Jan 14 05:47:45 2011 -0500 +++ b/bootstrap.conf Fri Jan 14 06:18:51 2011 -0500 @@ -22,6 +22,7 @@ copysign crypto/md5 fcntl + filemode fnmatch getcwd gethostname diff -r fd0a3ac60b0e -r bd6e37860be5 liboctave/ChangeLog --- a/liboctave/ChangeLog Fri Jan 14 05:47:45 2011 -0500 +++ b/liboctave/ChangeLog Fri Jan 14 06:18:51 2011 -0500 @@ -1,3 +1,11 @@ +2011-01-14 John W. Eaton + + * file-stat.cc (mode_as_string): Call strmode instead of mode_string. + + * filemode.h, filemode.c: Delete. + * Makefile.am (INCS): Remove filemode.h from the list. + (LIBOCTAVE_C_SOURCES): Remove filemode.c from the list. + 2011-01-14 John W. Eaton * Update copyright notices for 2011. diff -r fd0a3ac60b0e -r bd6e37860be5 liboctave/Makefile.am --- a/liboctave/Makefile.am Fri Jan 14 05:47:45 2011 -0500 +++ b/liboctave/Makefile.am Fri Jan 14 06:18:51 2011 -0500 @@ -197,7 +197,6 @@ dir-ops.h \ file-ops.h \ file-stat.h \ - filemode.h \ functor.h \ glob-match.h \ idx-vector.h \ @@ -478,7 +477,6 @@ LIBOCTAVE_C_SOURCES = \ f2c-main.c \ - filemode.c \ lo-cieee.c \ lo-cutils.c \ randgamma.c \ diff -r fd0a3ac60b0e -r bd6e37860be5 liboctave/file-stat.cc --- a/liboctave/file-stat.cc Fri Jan 14 05:47:45 2011 -0500 +++ b/liboctave/file-stat.cc Fri Jan 14 06:18:51 2011 -0500 @@ -30,9 +30,10 @@ #include #include +#include "filemode.h" + #include "file-ops.h" #include "file-stat.h" -#include "filemode.h" #include "statdefs.h" // FIXME -- the is_* and mode_as_string functions are only valid @@ -156,7 +157,7 @@ { char buf[11]; - mode_string (fs_mode, buf); + strmode (fs_mode, buf); buf[10] = '\0'; diff -r fd0a3ac60b0e -r bd6e37860be5 liboctave/filemode.c --- a/liboctave/filemode.c Fri Jan 14 05:47:45 2011 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,241 +0,0 @@ -/* filemode.c -- make a string describing file modes - Copyright (C) 1985, 1990, 1993 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301 USA. */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include "filemode.h" - -#if !S_IRUSR -# if S_IREAD -# define S_IRUSR S_IREAD -# else -# define S_IRUSR 00400 -# endif -#endif - -#if !S_IWUSR -# if S_IWRITE -# define S_IWUSR S_IWRITE -# else -# define S_IWUSR 00200 -# endif -#endif - -#if !S_IXUSR -# if S_IEXEC -# define S_IXUSR S_IEXEC -# else -# define S_IXUSR 00100 -# endif -#endif - -#ifdef STAT_MACROS_BROKEN -#undef S_ISBLK -#undef S_ISCHR -#undef S_ISDIR -#undef S_ISFIFO -#undef S_ISLNK -#undef S_ISMPB -#undef S_ISMPC -#undef S_ISNWK -#undef S_ISREG -#undef S_ISSOCK -#endif /* STAT_MACROS_BROKEN. */ - -#if !defined(S_ISBLK) && defined(S_IFBLK) -#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) -#endif -#if !defined(S_ISCHR) && defined(S_IFCHR) -#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) -#endif -#if !defined(S_ISDIR) && defined(S_IFDIR) -#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) -#endif -#if !defined(S_ISREG) && defined(S_IFREG) -#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) -#endif -#if !defined(S_ISFIFO) && defined(S_IFIFO) -#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) -#endif -#if !defined(S_ISLNK) && defined(S_IFLNK) -#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) -#endif -#if !defined(S_ISSOCK) && defined(S_IFSOCK) -#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) -#endif -#if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */ -#define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) -#define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) -#endif -#if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */ -#define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) -#endif - -/* Return a character indicating the type of file described by - file mode BITS: - 'd' for directories - 'b' for block special files - 'c' for character special files - 'm' for multiplexor files - 'l' for symbolic links - 's' for sockets - 'p' for fifos - '-' for regular files - '?' for any other file type. */ - -static char -ftypelet (long bits) -{ -#ifdef S_ISBLK - if (S_ISBLK (bits)) - return 'b'; -#endif - if (S_ISCHR (bits)) - return 'c'; - if (S_ISDIR (bits)) - return 'd'; - if (S_ISREG (bits)) - return '-'; -#ifdef S_ISFIFO - if (S_ISFIFO (bits)) - return 'p'; -#endif -#ifdef S_ISLNK - if (S_ISLNK (bits)) - return 'l'; -#endif -#ifdef S_ISSOCK - if (S_ISSOCK (bits)) - return 's'; -#endif -#ifdef S_ISMPC - if (S_ISMPC (bits)) - return 'm'; -#endif -#ifdef S_ISNWK - if (S_ISNWK (bits)) - return 'n'; -#endif - return '?'; -} - -/* Look at read, write, and execute bits in BITS and set - flags in CHARS accordingly. */ - -static void -rwx (unsigned short bits, char *chars) -{ - chars[0] = (bits & S_IRUSR) ? 'r' : '-'; - chars[1] = (bits & S_IWUSR) ? 'w' : '-'; - chars[2] = (bits & S_IXUSR) ? 'x' : '-'; -} - -/* Set the 's' and 't' flags in file attributes string CHARS, - according to the file mode BITS. */ - -static void -setst (unsigned short bits, char *chars) -{ -#ifdef S_ISUID - if (bits & S_ISUID) - { - if (chars[3] != 'x') - /* Set-uid, but not executable by owner. */ - chars[3] = 'S'; - else - chars[3] = 's'; - } -#endif -#ifdef S_ISGID - if (bits & S_ISGID) - { - if (chars[6] != 'x') - /* Set-gid, but not executable by group. */ - chars[6] = 'S'; - else - chars[6] = 's'; - } -#endif -#ifdef S_ISVTX - if (bits & S_ISVTX) - { - if (chars[9] != 'x') - /* Sticky, but not executable by others. */ - chars[9] = 'T'; - else - chars[9] = 't'; - } -#endif -} - -/* Like filemodestring, but only the relevant part of the `struct stat' - is given as an argument. */ - -void -mode_string (unsigned short mode, char *str) -{ - str[0] = ftypelet ((long) mode); - rwx ((mode & 0700) << 0, &str[1]); - rwx ((mode & 0070) << 3, &str[4]); - rwx ((mode & 0007) << 6, &str[7]); - setst (mode, str); -} - -/* filemodestring - fill in string STR with an ls-style ASCII - representation of the st_mode field of file stats block STATP. - 10 characters are stored in STR; no terminating null is added. - The characters stored in STR are: - - 0 File type. 'd' for directory, 'c' for character - special, 'b' for block special, 'm' for multiplex, - 'l' for symbolic link, 's' for socket, 'p' for fifo, - '-' for regular, '?' for any other file type - - 1 'r' if the owner may read, '-' otherwise. - - 2 'w' if the owner may write, '-' otherwise. - - 3 'x' if the owner may execute, 's' if the file is - set-user-id, '-' otherwise. - 'S' if the file is set-user-id, but the execute - bit isn't set. - - 4 'r' if group members may read, '-' otherwise. - - 5 'w' if group members may write, '-' otherwise. - - 6 'x' if group members may execute, 's' if the file is - set-group-id, '-' otherwise. - 'S' if it is set-group-id but not executable. - - 7 'r' if any user may read, '-' otherwise. - - 8 'w' if any user may write, '-' otherwise. - - 9 'x' if any user may execute, 't' if the file is "sticky" - (will be retained in swap space after execution), '-' - otherwise. - 'T' if the file is sticky but not executable. */ - -void -filemodestring (struct stat *statp, char *str) -{ - mode_string (statp->st_mode, str); -} diff -r fd0a3ac60b0e -r bd6e37860be5 liboctave/filemode.h --- a/liboctave/filemode.h Fri Jan 14 05:47:45 2011 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -/* - -Copyright (C) 2011 John W. Eaton - -This file is part of Octave. - -Octave is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 3 of the License, or (at your -option) any later version. - -Octave is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License -along with Octave; see the file COPYING. If not, see -. - -*/ - -#if !defined (octave_liboctave_filemode_h) -#define octave_liboctave_filemode_h 1 - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void mode_string (unsigned short, char *); - -void filemodestring (struct stat *, char *); - -#ifdef __cplusplus -} -#endif - -#endif