diff options
Diffstat (limited to 'coreutils')
-rw-r--r-- | coreutils/chown.c | 4 | ||||
-rw-r--r-- | coreutils/cp.c | 34 | ||||
-rw-r--r-- | coreutils/df.c | 88 |
3 files changed, 46 insertions, 80 deletions
diff --git a/coreutils/chown.c b/coreutils/chown.c index bcaeea3..8d6cffa 100644 --- a/coreutils/chown.c +++ b/coreutils/chown.c @@ -48,9 +48,9 @@ static int fileAction(const char *fileName) ((chownApp==TRUE)? uid: statBuf.st_uid), gid) < 0)) { perror(fileName); - return( TRUE); + return( FALSE); } - return( FALSE); + return( TRUE); } int chown_main(int argc, char **argv) diff --git a/coreutils/cp.c b/coreutils/cp.c index 4cdfc84..94b4ab0 100644 --- a/coreutils/cp.c +++ b/coreutils/cp.c @@ -47,43 +47,9 @@ static int fileAction(const char *fileName) char newdestName[NAME_MAX]; strcpy(newdestName, destName); strcat(newdestName, fileName+(strlen(srcName))); - fprintf(stderr, "A: copying %s to %s\n", fileName, newdestName); return (copyFile(fileName, newdestName, preserveFlag, followLinks)); } -static int dirAction(const char *fileName) -{ - char newdestName[NAME_MAX]; - struct stat statBuf; - struct utimbuf times; - - strcpy(newdestName, destName); - strcat(newdestName, fileName+(strlen(srcName))); - if (stat(newdestName, &statBuf)) { - if (mkdir( newdestName, 0777777 ^ umask (0))) { - perror(newdestName); - return( FALSE); - } - } - else if (!S_ISDIR (statBuf.st_mode)) { - fprintf(stderr, "`%s' exists but is not a directory", newdestName); - return( FALSE); - } - if (preserveFlag==TRUE) { - /* Try to preserve premissions, but don't whine on failure */ - if (stat(newdestName, &statBuf)) { - perror(newdestName); - return( FALSE); - } - chmod(newdestName, statBuf.st_mode); - chown(newdestName, statBuf.st_uid, statBuf.st_gid); - times.actime = statBuf.st_atime; - times.modtime = statBuf.st_mtime; - utime(newdestName, ×); - } - return TRUE; -} - extern int cp_main(int argc, char **argv) { diff --git a/coreutils/df.c b/coreutils/df.c index 8cc9381..a777d70 100644 --- a/coreutils/df.c +++ b/coreutils/df.c @@ -43,6 +43,50 @@ df(char* device, const char * mountPoint) return 0; } +/* + * Given a block device, find the mount table entry if that block device + * is mounted. + * + * Given any other file (or directory), find the mount table entry for its + * filesystem. + */ +extern struct mntent * +findMountPoint(const char* name, const char* table) +{ + struct stat s; + dev_t mountDevice; + FILE * mountTable; + struct mntent * mountEntry; + + if ( stat(name, &s) != 0 ) + return 0; + + if ( (s.st_mode & S_IFMT) == S_IFBLK ) + mountDevice = s.st_rdev; + else + mountDevice = s.st_dev; + + + if ( (mountTable = setmntent(table, "r")) == 0 ) + return 0; + + while ( (mountEntry = getmntent(mountTable)) != 0 ) { + if ( strcmp(name, mountEntry->mnt_dir) == 0 + || strcmp(name, mountEntry->mnt_fsname) == 0 ) /* String match. */ + break; + if ( stat(mountEntry->mnt_fsname, &s) == 0 + && s.st_rdev == mountDevice ) /* Match the device. */ + break; + if ( stat(mountEntry->mnt_dir, &s) == 0 + && s.st_dev == mountDevice ) /* Match the directory's mount point. */ + break; + } + endmntent(mountTable); + return mountEntry; +} + + + extern int df_main(int argc, char * * argv) { @@ -90,47 +134,3 @@ df_main(int argc, char * * argv) - -/* - * Given a block device, find the mount table entry if that block device - * is mounted. - * - * Given any other file (or directory), find the mount table entry for its - * filesystem. - */ -extern struct mntent * -findMountPoint(const char* name, const char* table) -{ - struct stat s; - dev_t mountDevice; - FILE * mountTable; - struct mntent * mountEntry; - - if ( stat(name, &s) != 0 ) - return 0; - - if ( (s.st_mode & S_IFMT) == S_IFBLK ) - mountDevice = s.st_rdev; - else - mountDevice = s.st_dev; - - - if ( (mountTable = setmntent(table, "r")) == 0 ) - return 0; - - while ( (mountEntry = getmntent(mountTable)) != 0 ) { - if ( strcmp(name, mountEntry->mnt_dir) == 0 - || strcmp(name, mountEntry->mnt_fsname) == 0 ) /* String match. */ - break; - if ( stat(mountEntry->mnt_fsname, &s) == 0 - && s.st_rdev == mountDevice ) /* Match the device. */ - break; - if ( stat(mountEntry->mnt_dir, &s) == 0 - && s.st_dev == mountDevice ) /* Match the directory's mount point. */ - break; - } - endmntent(mountTable); - return mountEntry; -} - - |