1
0
Files
irix-657m-src/eoe/cmd/fam/ChangeFlags.c++
2022-09-29 17:59:04 +03:00

63 lines
972 B
C++

#include "ChangeFlags.h"
#include <assert.h>
#include <ctype.h>
#include <stdio.h>
char ChangeFlags::value_buffer[];
ChangeFlags::ChangeFlags(const char *p, const char **pp)
{
while (isascii(*p) && isspace(*p))
p++;
for ( ; ; p++)
switch (*p)
{
case 'd':
set(DEV); break;
case 'i':
set(INO); break;
case 'u':
set(UID); break;
case 'g':
set(GID); break;
case 's':
set(SIZE); break;
case 'm':
set(MTIME); break;
case 'c':
set(CTIME); break;
default:
if (pp)
*pp = p;
return;
}
}
const char *
ChangeFlags::value() const
{
register FlagWord f = flags;
register char *s = value_buffer;
if (f & DEV)
*s++ = 'd';
if (f & INO)
*s++ = 'i';
if (f & UID)
*s++ = 'u';
if (f & GID)
*s++ = 'g';
if (f & SIZE)
*s++ = 's';
if (f & MTIME)
*s++ = 'm';
if (f & CTIME)
*s++ = 'c';
*s = '\0';
assert(s < value_buffer + sizeof value_buffer);
return value_buffer;
}