annotate lib/filemode.c @ 17463:203c036eb0c6

bootstrap: support checksum utils without a --status option * build-aux/bootstrap: Only look for sha1sum if updating po files. Add sha1 to the list of supported checksum utils since it's now supported through adjustments below. (update_po_files): Remove the use of --status in a way that will suppress all error messages, but since this is only used to minimize updates, it shouldn't cause an issue. Exit early if there is a problem updating the po file checksums. (find_tool): Remove the check for --version support as this is optional as per commit 86186b17. Don't even check for the presence of the command as if that is needed, it's supported through configuring prerequisites in bootstrap.conf. Prompt that when a tool isn't found, one can define an environment variable to add to the hardcoded search list.
author Pádraig Brady <P@draigBrady.com>
date Thu, 08 Aug 2013 11:08:49 +0100
parents e542fd46ad6f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
1 /* filemode.c -- make a string describing file modes
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
2
17249
e542fd46ad6f maint: update all copyright year number ranges
Eric Blake <eblake@redhat.com>
parents: 17210
diff changeset
3 Copyright (C) 1985, 1990, 1993, 1998-2000, 2004, 2006, 2009-2013 Free
12559
c2cbabec01dd update nearly all FSF copyright year lists to include 2010
Jim Meyering <meyering@redhat.com>
parents: 12518
diff changeset
4 Software Foundation, Inc.
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
5
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 7581
diff changeset
6 This program is free software: you can redistribute it and/or modify
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 7581
diff changeset
8 the Free Software Foundation; either version 3 of the License, or
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 7581
diff changeset
9 (at your option) any later version.
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
10
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
11 This program is distributed in the hope that it will be useful,
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
14 GNU General Public License for more details.
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
15
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 7581
diff changeset
17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
2426
b22a7367bcf5 Use `C' to denote so-called `contiguous' files, the same way that tar does.
Jim Meyering <jim@meyering.net>
parents: 1814
diff changeset
18
7302
8a1a9361108c * _fpending.c: Include <config.h> unconditionally, since we no
Paul Eggert <eggert@cs.ucla.edu>
parents: 6912
diff changeset
19 #include <config.h>
297
Jim Meyering <jim@meyering.net>
parents: 5
diff changeset
20
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
21 #include "filemode.h"
297
Jim Meyering <jim@meyering.net>
parents: 5
diff changeset
22
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
23 /* The following is for Cray DMF (Data Migration Facility), which is a
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16201
diff changeset
24 HSM file system. A migrated file has a 'st_dm_mode' that is
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16201
diff changeset
25 different from the normal 'st_mode', so any tests for migrated
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
26 files should use the former. */
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
27 #if HAVE_ST_DM_MODE
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
28 # define IS_MIGRATED_FILE(statp) \
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
29 (S_ISOFD (statp->st_dm_mode) || S_ISOFL (statp->st_dm_mode))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
30 #else
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
31 # define IS_MIGRATED_FILE(statp) 0
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
32 #endif
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
33
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
34 #if ! HAVE_DECL_STRMODE
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
35
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
36 /* Return a character indicating the type of file described by
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
37 file mode BITS:
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
38 '-' regular file
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
39 'b' block special file
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
40 'c' character special file
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
41 'C' high performance ("contiguous data") file
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
42 'd' directory
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
43 'D' door
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
44 'l' symbolic link
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
45 'm' multiplexed file (7th edition Unix; obsolete)
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
46 'n' network special file (HP-UX)
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
47 'p' fifo (named pipe)
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
48 'P' port
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
49 's' socket
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
50 'w' whiteout (4.4BSD)
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
51 '?' some other file type */
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
52
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
53 static char
1814
e8f03a041d0e (setst, ftypelet, mode_string): Use proper mode_t types and macros.
Jim Meyering <jim@meyering.net>
parents: 1697
diff changeset
54 ftypelet (mode_t bits)
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
55 {
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
56 /* These are the most common, so test for them first. */
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
57 if (S_ISREG (bits))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
58 return '-';
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
59 if (S_ISDIR (bits))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
60 return 'd';
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
61
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
62 /* Other letters standardized by POSIX 1003.1-2004. */
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
63 if (S_ISBLK (bits))
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
64 return 'b';
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
65 if (S_ISCHR (bits))
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
66 return 'c';
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
67 if (S_ISLNK (bits))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
68 return 'l';
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
69 if (S_ISFIFO (bits))
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
70 return 'p';
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
71
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
72 /* Other file types (though not letters) standardized by POSIX. */
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
73 if (S_ISSOCK (bits))
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
74 return 's';
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
75
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
76 /* Nonstandard file types. */
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
77 if (S_ISCTG (bits))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
78 return 'C';
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
79 if (S_ISDOOR (bits))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
80 return 'D';
17210
c09382013ecb filemode, sys_stat: Handle MPX files a la AIX.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16235
diff changeset
81 if (S_ISMPB (bits) || S_ISMPC (bits) || S_ISMPX (bits))
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
82 return 'm';
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
83 if (S_ISNWK (bits))
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
84 return 'n';
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
85 if (S_ISPORT (bits))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
86 return 'P';
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
87 if (S_ISWHT (bits))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
88 return 'w';
711
e80b482cadad (ftypelet): Add support for Cray's migrated dmf files.
Jim Meyering <jim@meyering.net>
parents: 650
diff changeset
89
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
90 return '?';
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
91 }
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
92
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
93 /* Like filemodestring, but rely only on MODE. */
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
94
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
95 void
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
96 strmode (mode_t mode, char *str)
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
97 {
1814
e8f03a041d0e (setst, ftypelet, mode_string): Use proper mode_t types and macros.
Jim Meyering <jim@meyering.net>
parents: 1697
diff changeset
98 str[0] = ftypelet (mode);
e8f03a041d0e (setst, ftypelet, mode_string): Use proper mode_t types and macros.
Jim Meyering <jim@meyering.net>
parents: 1697
diff changeset
99 str[1] = mode & S_IRUSR ? 'r' : '-';
e8f03a041d0e (setst, ftypelet, mode_string): Use proper mode_t types and macros.
Jim Meyering <jim@meyering.net>
parents: 1697
diff changeset
100 str[2] = mode & S_IWUSR ? 'w' : '-';
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
101 str[3] = (mode & S_ISUID
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
102 ? (mode & S_IXUSR ? 's' : 'S')
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
103 : (mode & S_IXUSR ? 'x' : '-'));
1814
e8f03a041d0e (setst, ftypelet, mode_string): Use proper mode_t types and macros.
Jim Meyering <jim@meyering.net>
parents: 1697
diff changeset
104 str[4] = mode & S_IRGRP ? 'r' : '-';
e8f03a041d0e (setst, ftypelet, mode_string): Use proper mode_t types and macros.
Jim Meyering <jim@meyering.net>
parents: 1697
diff changeset
105 str[5] = mode & S_IWGRP ? 'w' : '-';
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
106 str[6] = (mode & S_ISGID
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
107 ? (mode & S_IXGRP ? 's' : 'S')
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
108 : (mode & S_IXGRP ? 'x' : '-'));
1814
e8f03a041d0e (setst, ftypelet, mode_string): Use proper mode_t types and macros.
Jim Meyering <jim@meyering.net>
parents: 1697
diff changeset
109 str[7] = mode & S_IROTH ? 'r' : '-';
e8f03a041d0e (setst, ftypelet, mode_string): Use proper mode_t types and macros.
Jim Meyering <jim@meyering.net>
parents: 1697
diff changeset
110 str[8] = mode & S_IWOTH ? 'w' : '-';
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
111 str[9] = (mode & S_ISVTX
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
112 ? (mode & S_IXOTH ? 't' : 'T')
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
113 : (mode & S_IXOTH ? 'x' : '-'));
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
114 str[10] = ' ';
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
115 str[11] = '\0';
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
116 }
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
117
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
118 #endif /* ! HAVE_DECL_STRMODE */
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
119
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
120 /* filemodestring - fill in string STR with an ls-style ASCII
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
121 representation of the st_mode field of file stats block STATP.
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
122 12 characters are stored in STR.
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
123 The characters stored in STR are:
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
124
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
125 0 File type, as in ftypelet above, except that other letters are used
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
126 for files whose type cannot be determined solely from st_mode:
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
127
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
128 'F' semaphore
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
129 'M' migrated file (Cray DMF)
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
130 'Q' message queue
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
131 'S' shared memory object
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
132 'T' typed memory object
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
133
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
134 1 'r' if the owner may read, '-' otherwise.
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
135
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
136 2 'w' if the owner may write, '-' otherwise.
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
137
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
138 3 'x' if the owner may execute, 's' if the file is
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
139 set-user-id, '-' otherwise.
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
140 'S' if the file is set-user-id, but the execute
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
141 bit isn't set.
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
142
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
143 4 'r' if group members may read, '-' otherwise.
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
144
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
145 5 'w' if group members may write, '-' otherwise.
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
146
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
147 6 'x' if group members may execute, 's' if the file is
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
148 set-group-id, '-' otherwise.
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
149 'S' if it is set-group-id but not executable.
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
150
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
151 7 'r' if any user may read, '-' otherwise.
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
152
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
153 8 'w' if any user may write, '-' otherwise.
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
154
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
155 9 'x' if any user may execute, 't' if the file is "sticky"
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
156 (will be retained in swap space after execution), '-'
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
157 otherwise.
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
158 'T' if the file is sticky but not executable.
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
159
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
160 10 ' ' for compatibility with 4.4BSD strmode,
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
161 since this interface does not support ACLs.
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
162
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
163 11 '\0'. */
1472
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
164
9bb334c7c86e Protoize. Tsort function definitions and remove prototypes of
Jim Meyering <jim@meyering.net>
parents: 1470
diff changeset
165 void
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
166 filemodestring (struct stat const *statp, char *str)
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
167 {
6912
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
168 strmode (statp->st_mode, str);
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
169
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
170 if (S_TYPEISSEM (statp))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
171 str[0] = 'F';
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
172 else if (IS_MIGRATED_FILE (statp))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
173 str[0] = 'M';
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
174 else if (S_TYPEISMQ (statp))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
175 str[0] = 'Q';
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
176 else if (S_TYPEISSHM (statp))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
177 str[0] = 'S';
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
178 else if (S_TYPEISTMO (statp))
314715e0260d Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
179 str[0] = 'T';
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
180 }