PARSE_OPEN_FLAGS   (3) manpage
PARSE_OPEN_FLAGS
3
07/25/2000
Linux Test Project
  • NAME
      parse_open_flags - converts open flag symbols into bitmask
      openflags2symbols - converts open flag bitmask into symbols
  • SYNOPSIS
      int
      parse_open_flags(symbols, badname)
      char *
      symbols;
      char **
      badname;
      char *
      openflags2symbols(openflags, sep, mode)
      int
      openflags;
      char *
      sep;
      int
      mode;
  • DESCRIPTION
      The parse_open_flags function can be used to convert a list of comma separated open(2) flag symbols (i.e. O_TRUNC) into the bitmask that can be used by open(2) . If a symbol is unknown and badname is not NULL, badname will updated to point that symbol in symbols. Parse_open_flags will return -1 on this error. Otherwise parse_open_flags will return the open flag bitmask. If parse_open_flags returns, string will left unchanged.
      The
      openflags2symbols function attempts to convert open flag bits into human readable  symbols (i.e. O_TRUNC).  If there are more than one symbol, the sep string will be placed as a separator between symbols.  Commonly used separators would be a comma "," or pipe "|".  If mode is one and not all openflags bits can be converted to symbols, the UNKNOWN symbol will be added to return string. Openflags2symbols will return the identified symbols. If no symbols are recognized the return value will be a empty string or the UNKNOWN symbol.
      If the
      O_WRONLY and O_RDWR bits are not set, openflags2symbols assumes that O_RDONLY symbol is wanted.
  • SEE ALSO
      open(2) , /usr/include/sys/fcntl.h.
  • EXAMPLES
      
      /*
      * The following code provides a UNIT test main for
      * parse_open_flags and openflags2symbols functions.
      */
      #include <stdio.h>

      main(argc, argv)
      int argc;
      char **argv;
      {
          int bits;
          int ret;
          char *err;

          if (argc == 1 ) {
              printf("Usage: %s openflagsbitsnt%s symbolsn", argv[0], argv[0]);
              exit(1) ;
          }

          if ( sscanf(argv[1], "%i", &bits) == 1 ) {
              printf("openflags2symbols(%#o, ",", 1) returned %sn",
                  bits, openflags2symbols(bits, ",", 1));

          } else {
              ret=parse_open_flags(argv[1], &err);
              if ( ret == -1 )
                  printf("parse_open_flags(%s, &err) returned -1, err = %sn",
                      argv[0], err);
              else
                  printf("parse_open_flags(%s, &err) returned %#on", argv[0], ret);
          }

          exit(0) ;
      }


  • LIMITATIONS
      Currently (06/96) all known symbols are coded into openflags2symbols.
      If new open flags are added this function code will have to updated
      to know about them or they will not be recognized.

      The static space where
      openflags2symbols stores open flag
      symbols with callers separators is limited to 512 characters.
      This should be large enough for most open flags symbols as long as the
      separator is kept short.

Current Users: 34 © 1999-2006 Linux.com.hk PenguinSoft
All trademarks and copyrights on this page are owned by their respective companies. Linux is a trademark of Linus Torvalds.