Mercurial > hg > octave-nkf > gnulib-hg
changeset 17618:69fa068eff4e
file-type: add support for doors and other less-common file types
Problem with S_ISDOOR reported by Rich Burridge.
* lib/file-type.c (file_type): Do S_ISLNK early too. Do S_TYPEIS*
macros before the rest. Add S_ISCTG, S_ISDOOR, S_ISMPB, S_ISMPC,
S_ISMPX, S_ISNAM, S_ISNWK, S_ISOFD, S_ISOFL, S_ISPORT, S_ISWHT.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Wed, 05 Feb 2014 11:09:15 -0800 |
parents | e52ef9f51681 |
children | 7f22fb221397 |
files | ChangeLog lib/file-type.c |
diffstat | 2 files changed, 59 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2014-02-05 Paul Eggert <eggert@cs.ucla.edu> + + file-type: add support for doors and other less-common file types + Problem with S_ISDOOR reported by Rich Burridge. + * lib/file-type.c (file_type): Do S_ISLNK early too. Do S_TYPEIS* + macros before the rest. Add S_ISCTG, S_ISDOOR, S_ISMPB, S_ISMPC, + S_ISMPX, S_ISNAM, S_ISNWK, S_ISOFD, S_ISOFL, S_ISPORT, S_ISWHT. + 2014-01-23 Eric Blake <eblake@redhat.com> pthread: work around winpthread header pollution on mingw
--- a/lib/file-type.c +++ b/lib/file-type.c @@ -34,26 +34,19 @@ To keep diagnostics grammatical in English, the returned string must start with a consonant. */ + /* Do these three first, as they're the most common. */ + if (S_ISREG (st->st_mode)) return st->st_size == 0 ? _("regular empty file") : _("regular file"); if (S_ISDIR (st->st_mode)) return _("directory"); - if (S_ISBLK (st->st_mode)) - return _("block special file"); - - if (S_ISCHR (st->st_mode)) - return _("character special file"); - - if (S_ISFIFO (st->st_mode)) - return _("fifo"); - if (S_ISLNK (st->st_mode)) return _("symbolic link"); - if (S_ISSOCK (st->st_mode)) - return _("socket"); + /* Do the S_TYPEIS* macros next, as they may be implemented in terms + of S_ISNAM, and we want the more-specialized interpretation. */ if (S_TYPEISMQ (st)) return _("message queue"); @@ -67,5 +60,52 @@ if (S_TYPEISTMO (st)) return _("typed memory object"); + /* The remaining are in alphabetical order. */ + + if (S_ISBLK (st->st_mode)) + return _("block special file"); + + if (S_ISCHR (st->st_mode)) + return _("character special file"); + + if (S_ISCTG (st->st_mode)) + return _("contiguous data"); + + if (S_ISFIFO (st->st_mode)) + return _("fifo"); + + if (S_ISDOOR (st->st_mode)) + return _("door"); + + if (S_ISMPB (st->st_mode)) + return _("multiplexed block special file"); + + if (S_ISMPC (st->st_mode)) + return _("multiplexed character special file"); + + if (S_ISMPX (st->st_mode)) + return _("multiplexed file"); + + if (S_ISNAM (st->st_mode)) + return _("named file"); + + if (S_ISNWK (st->st_mode)) + return _("network special file"); + + if (S_ISOFD (st->st_mode)) + return _("migrated file with data"); + + if (S_ISOFL (st->st_mode)) + return _("migrated file without data"); + + if (S_ISPORT (st->st_mode)) + return _("port"); + + if (S_ISSOCK (st->st_mode)) + return _("socket"); + + if (S_ISWHT (st->st_mode)) + return _("whiteout"); + return _("weird file"); }