mirror of
https://github.com/sheumann/hush.git
synced 2024-07-07 10:28:56 +00:00
Stuf
This commit is contained in:
parent
50d6360771
commit
3d8dbe1ca0
@ -7,6 +7,7 @@
|
|||||||
thanks to Eric Delaunay.
|
thanks to Eric Delaunay.
|
||||||
* more started to read from stdin after the last file was finished, and
|
* more started to read from stdin after the last file was finished, and
|
||||||
options were not parsed correctly (fix thanks to Eric Delaunay).
|
options were not parsed correctly (fix thanks to Eric Delaunay).
|
||||||
|
* more will now use the terminal size if BB_FEATURE_AUTOWIDTH is on.
|
||||||
* rm wouldn't remove a symlink unless the symlink was valid. This was
|
* rm wouldn't remove a symlink unless the symlink was valid. This was
|
||||||
a side effect of the busybox 0.32 recursiveAction() fix. Things
|
a side effect of the busybox 0.32 recursiveAction() fix. Things
|
||||||
should now work correctly.
|
should now work correctly.
|
||||||
|
93
utility.c
93
utility.c
@ -236,7 +236,30 @@ copyFile( const char *srcName, const char *destName,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef BB_TAR
|
#if defined BB_TAR || defined BB_LS
|
||||||
|
|
||||||
|
#define TYPEINDEX(mode) (((mode) >> 12) & 0x0f)
|
||||||
|
#define TYPECHAR(mode) ("0pcCd?bB-?l?s???" [TYPEINDEX(mode)])
|
||||||
|
|
||||||
|
/* The special bits. If set, display SMODE0/1 instead of MODE0/1 */
|
||||||
|
static const mode_t SBIT[] = {
|
||||||
|
0, 0, S_ISUID,
|
||||||
|
0, 0, S_ISGID,
|
||||||
|
0, 0, S_ISVTX
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The 9 mode bits to test */
|
||||||
|
static const mode_t MBIT[] = {
|
||||||
|
S_IRUSR, S_IWUSR, S_IXUSR,
|
||||||
|
S_IRGRP, S_IWGRP, S_IXGRP,
|
||||||
|
S_IROTH, S_IWOTH, S_IXOTH
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MODE1 "rwxrwxrwx"
|
||||||
|
#define MODE0 "---------"
|
||||||
|
#define SMODE1 "..s..s..t"
|
||||||
|
#define SMODE0 "..S..S..T"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the standard ls-like mode string from a file mode.
|
* Return the standard ls-like mode string from a file mode.
|
||||||
* This is static and so is overwritten on each call.
|
* This is static and so is overwritten on each call.
|
||||||
@ -245,64 +268,25 @@ const char *modeString(int mode)
|
|||||||
{
|
{
|
||||||
static char buf[12];
|
static char buf[12];
|
||||||
|
|
||||||
strcpy(buf, "----------");
|
int i;
|
||||||
|
buf[0] = TYPECHAR(mode);
|
||||||
/*
|
for (i=0; i<9; i++) {
|
||||||
* Fill in the file type.
|
if (mode & SBIT[i])
|
||||||
*/
|
buf[i+1] = (mode & MBIT[i])?
|
||||||
if (S_ISDIR(mode))
|
SMODE1[i] : SMODE0[i];
|
||||||
buf[0] = 'd';
|
else
|
||||||
if (S_ISCHR(mode))
|
buf[i+1] = (mode & MBIT[i])?
|
||||||
buf[0] = 'c';
|
MODE1[i] : MODE0[i];
|
||||||
if (S_ISBLK(mode))
|
}
|
||||||
buf[0] = 'b';
|
|
||||||
if (S_ISFIFO(mode))
|
|
||||||
buf[0] = 'p';
|
|
||||||
if (S_ISLNK(mode))
|
|
||||||
buf[0] = 'l';
|
|
||||||
if (S_ISSOCK(mode))
|
|
||||||
buf[0] = 's';
|
|
||||||
/*
|
|
||||||
* Now fill in the normal file permissions.
|
|
||||||
*/
|
|
||||||
if (mode & S_IRUSR)
|
|
||||||
buf[1] = 'r';
|
|
||||||
if (mode & S_IWUSR)
|
|
||||||
buf[2] = 'w';
|
|
||||||
if (mode & S_IXUSR)
|
|
||||||
buf[3] = 'x';
|
|
||||||
if (mode & S_IRGRP)
|
|
||||||
buf[4] = 'r';
|
|
||||||
if (mode & S_IWGRP)
|
|
||||||
buf[5] = 'w';
|
|
||||||
if (mode & S_IXGRP)
|
|
||||||
buf[6] = 'x';
|
|
||||||
if (mode & S_IROTH)
|
|
||||||
buf[7] = 'r';
|
|
||||||
if (mode & S_IWOTH)
|
|
||||||
buf[8] = 'w';
|
|
||||||
if (mode & S_IXOTH)
|
|
||||||
buf[9] = 'x';
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Finally fill in magic stuff like suid and sticky text.
|
|
||||||
*/
|
|
||||||
if (mode & S_ISUID)
|
|
||||||
buf[3] = ((mode & S_IXUSR) ? 's' : 'S');
|
|
||||||
if (mode & S_ISGID)
|
|
||||||
buf[6] = ((mode & S_IXGRP) ? 's' : 'S');
|
|
||||||
if (mode & S_ISVTX)
|
|
||||||
buf[9] = ((mode & S_IXOTH) ? 't' : 'T');
|
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef BB_TAR
|
||||||
/*
|
/*
|
||||||
* Get the time string to be used for a file.
|
* Return the standard ls-like time string from a time_t
|
||||||
* This is down to the minute for new files, but only the date for old files.
|
* This is static and so is overwritten on each call.
|
||||||
* The string is returned from a static buffer, and so is overwritten for
|
|
||||||
* each call.
|
|
||||||
*/
|
*/
|
||||||
const char *timeString(time_t timeVal)
|
const char *timeString(time_t timeVal)
|
||||||
{
|
{
|
||||||
@ -325,7 +309,6 @@ const char *timeString(time_t timeVal)
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Write all of the supplied buffer out to a file.
|
* Write all of the supplied buffer out to a file.
|
||||||
* This does multiple writes as necessary.
|
* This does multiple writes as necessary.
|
||||||
|
Loading…
Reference in New Issue
Block a user