Archive-Unzip-Burst
view release on metacpan or search on metacpan
unzip-6.0/tandem/tandem.c view on Meta::CPAN
union timestamp_ov {
long long fulltime;
short wordtime[4];
};
union timestamp_ov lasttime, opentime;
struct tm *modt, *opent;
short datetime[8], errormask[1];
short len, fnum, access, exclus, options;
char fname[FILENAME_MAX + 1];
short extension;
char ext[EXTENSION_MAX + 1];
if (islicensed() ) {
/* Attempt to update file label */
modt = gmtime( &time->modtime );
datetime[0] = modt->tm_year + 1900;
datetime[1] = modt->tm_mon + 1;
datetime[2] = modt->tm_mday;
datetime[3] = modt->tm_hour;
datetime[4] = modt->tm_min;
datetime[5] = modt->tm_sec;
datetime[6] = datetime[7] = 0;
errormask[0] = 0;
lasttime.fulltime = COMPUTETIMESTAMP (datetime, errormask);
opent = gmtime( &time->actime );
datetime[0] = opent->tm_year + 1900;
datetime[1] = opent->tm_mon + 1;
datetime[2] = opent->tm_mday;
datetime[3] = opent->tm_hour;
datetime[4] = opent->tm_min;
datetime[5] = opent->tm_sec;
datetime[6] = datetime[7] = 0;
errormask[0] = 0;
opentime.fulltime = COMPUTETIMESTAMP (datetime, errormask);
/* Remove any (pseudo) file extension */
extension = parsename (file,fname,ext);
len = strlen(fname);
access = NSK_WRONLY;
exclus = NSK_SHARED;
options = NSK_NOUPDATEOPENTIME;
extension = parsename (file,fname,ext);
len = strlen(fname);
err = FILE_OPEN_((char *)fname, len, &fnum, access, exclus,,,options,,,);
result = changelabel(fnum,lasttime.wordtime,opentime.wordtime);
err = FILE_CLOSE_(fnum);
return result;
}
return -1;
#else /* !LICENSED */
return 0; /* "no error", to suppress annoying failure messages */
#endif /* ?LICENSED */
}
/* TANDEM version of chmod() function */
int chmod(file, unix_sec)
const char *file;
mode_t unix_sec;
{
FILE *stream;
struct nsk_sec_type {
unsigned progid : 1;
unsigned clear : 1;
unsigned null : 2;
unsigned read : 3;
unsigned write : 3;
unsigned execute: 3;
unsigned purge : 3;
};
union nsk_sec_ov {
struct nsk_sec_type bit_ov;
short int_ov;
};
union nsk_sec_ov nsk_sec;
short fnum, err, nsk_sec_int;
short len, access, exclus, extension, options;
char fname[FILENAME_MAX + 1];
char ext[EXTENSION_MAX + 1];
nsk_sec.bit_ov.progid = 0;
nsk_sec.bit_ov.clear = 0;
nsk_sec.bit_ov.null = 0;
/* 4="N", 5="C", 6="U", 7="-" */
if (unix_sec & S_IROTH) nsk_sec.bit_ov.read = 4;
else if (unix_sec & S_IRGRP) nsk_sec.bit_ov.read = 5;
else if (unix_sec & S_IRUSR) nsk_sec.bit_ov.read = 6;
else nsk_sec.bit_ov.read = 7;
if (unix_sec & S_IWOTH) nsk_sec.bit_ov.write = 4;
else if (unix_sec & S_IWGRP) nsk_sec.bit_ov.write = 5;
else if (unix_sec & S_IWUSR) nsk_sec.bit_ov.write = 6;
else nsk_sec.bit_ov.write = 7;
if (unix_sec & S_IXOTH) nsk_sec.bit_ov.execute = 4;
else if (unix_sec & S_IXGRP) nsk_sec.bit_ov.execute = 5;
else if (unix_sec & S_IXUSR) nsk_sec.bit_ov.execute = 6;
else nsk_sec.bit_ov.execute = 7;
nsk_sec.bit_ov.purge = nsk_sec.bit_ov.write;
nsk_sec_int = nsk_sec.int_ov;
access = NSK_RDONLY;
exclus = NSK_SHARED;
options = NSK_NOUPDATEOPENTIME;
extension = parsename (file,fname,ext);
len = strlen(fname);
err = FILE_OPEN_((char *)fname, len, &fnum, access, exclus,,,options,,,);
err = (SETMODE(fnum, SET_FILE_SECURITY, nsk_sec_int) != CCE);
err = FILE_CLOSE_(fnum);
return (err != 0 ? -1 : 0);
( run in 0.902 second using v1.01-cache-2.11-cpan-ff9377addf4 )