From: DAN LI <li.dan@cn.fujitsu.com>
To: LTP list <ltp-list@lists.sourceforge.net>
Subject: [LTP] [PATCH 1/2]mount/mount03.c: cleanup
Date: Mon, 13 May 2013 10:41:39 +0800 [thread overview]
Message-ID: <519052E3.9040801@cn.fujitsu.com> (raw)
1. Remove useless comments
2. Revise code to follow ltp-code-style
Signed-off-by: DAN LI <li.dan@cn.fujitsu.com>
---
testcases/kernel/syscalls/mount/mount03.c | 208 +++++++++++++-----------------
1 file changed, 89 insertions(+), 119 deletions(-)
diff --git a/testcases/kernel/syscalls/mount/mount03.c b/testcases/kernel/syscalls/mount/mount03.c
index 04570b9..ea4b0e9 100644
--- a/testcases/kernel/syscalls/mount/mount03.c
+++ b/testcases/kernel/syscalls/mount/mount03.c
@@ -14,10 +14,8 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
-/**************************************************************************
- *
- * TEST IDENTIFIER : mount03
- *
+
+/*
* EXECUTED BY : root / superuser
*
* TEST TITLE : Test for checking mount(2) flags
@@ -26,10 +24,6 @@
*
* AUTHOR : Nirmala Devi Dhanasekar <nirmala.devi@wipro.com>
*
- * SIGNALS
- * Uses SIGUSR1 to pause before test if option set.
- * (See the parse_opts(3) man page).
- *
* DESCRIPTION
* Check for basic mount(2) system call flags.
*
@@ -42,13 +36,13 @@
* 5) MS_REMOUNT - alter flags of a mounted FS.
* 6) MS_NOSUID - ignore suid and sgid bits.
*
- * Setup:
+ * Setup:
* Setup signal handling.
* Create a mount point.
* Pause for SIGUSR1 if option specified.
*
- * Test:
- * Loop if the proper options are given.
+ * Test:
+ * Loop if the proper options are given.
* Execute mount system call for each flag
* Validate each flag setting. if validation fails
* Delete the mount point.
@@ -56,22 +50,10 @@
* Delete the mount point.
* Otherwise, Issue a PASS message.
*
- * Cleanup:
- * Print errno log and/or timing stats if options given
+ * Cleanup:
+ * Print errno log and/or timing stats if options given
* Delete the temporary directory(s)/file(s) created.
*
- * USAGE: <for command-line>
- * mount03 [-T type] -D device [-e] [-i n] [-I x] [-p x] [-t]
- * where, -T type : specifies the type of filesystem to
- * be mounted. Default ext2.
- * -D device : device to be mounted.
- * -e : Turn on errno logging.
- * -i n : Execute test n times.
- * -I x : Execute test for x seconds.
- * -p : Pause for SIGUSR1 before starting
- * -P x : Pause for x seconds between iterations.
- * -t : Turn on syscall timing.
- *
* RESTRICTIONS
* test must run with the -D option
* test doesn't support -c option to run it in parallel, as mount
@@ -102,30 +84,29 @@ static int setup_uid(void);
char *TCID = "mount03";
int TST_TOTAL = 6;
-extern char **environ; /* pointer to this processes env */
#define DEFAULT_FSTYPE "ext2"
#define TEMP_FILE "temp_file"
#define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
-#define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
+#define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|\
+ S_IXGRP|S_IROTH|S_IXOTH)
#define SUID_MODE (S_ISUID|S_IRUSR|S_IXUSR|S_IXGRP|S_IXOTH)
-static char *Fstype;
+static char *fs_type;
static char mntpoint[20];
static char *fstype;
static char *device;
-static int Tflag = 0;
-static int Dflag = 0;
-
-static char write_buffer[BUFSIZ]; /* buffer used to write data to file */
-static char read_buffer[BUFSIZ]; /* buffer used to read data from file */
-static int fildes; /* file descriptor for temporary file */
-static char *Cmd_buffer[3]; /* Buffer to hold command string */
-static char Path_name[PATH_MAX]; /* Buffer to hold command string */
-static char testhome_path[PATH_MAX]; /* Test home Path */
-static char file[PATH_MAX]; /* Temporary file */
-static char cmd[] = "cp";
+static int tflag;
+static int dflag;
+
+static char write_buffer[BUFSIZ];
+static char read_buffer[BUFSIZ];
+static int fildes;
+static char path_name[PATH_MAX];
+static char testhome_path[PATH_MAX];
+static char file[PATH_MAX];
+static char *cmd = "cp";
long rwflags[] = {
MS_RDONLY,
@@ -136,41 +117,41 @@ long rwflags[] = {
MS_NOSUID,
};
-static option_t options[] = { /* options supported by mount03 test */
- {"T:", &Tflag, &fstype}, /* -T type of filesystem */
- {"D:", &Dflag, &device}, /* -D device used for mounting */
+static option_t options[] = {
+ {"T:", &tflag, &fstype},
+ {"D:", &dflag, &device},
{NULL, NULL, NULL}
};
-int main(int ac, char **av)
+int main(int argc, char *argv[])
{
int lc, i;
char *msg;
- if ((msg = parse_opts(ac, av, options, &help)) != NULL)
+ msg = parse_opts(argc, argv, options, &help);
+ if (msg != NULL)
tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
/* Check for mandatory option of the testcase */
- if (!Dflag) {
+ if (!dflag)
tst_brkm(TBROK, NULL,
"you must specify the device used for mounting with -D "
"option");
- }
- if (Tflag) {
- Fstype = (char *)malloc(strlen(fstype) + 1);
- if (Fstype == NULL) {
+ if (tflag) {
+ fs_type = (char *)malloc(strlen(fstype) + 1);
+ if (fs_type == NULL)
tst_brkm(TBROK | TERRNO, NULL, "malloc failed");
- }
- Fstype[strlen(fstype)] = '\0';
- strncpy(Fstype, fstype, strlen(fstype));
+
+ fs_type[strlen(fstype)] = '\0';
+ strncpy(fs_type, fstype, strlen(fstype));
} else {
- Fstype = (char *)malloc(strlen(DEFAULT_FSTYPE) + 1);
- if (Fstype == NULL) {
+ fs_type = (char *)malloc(strlen(DEFAULT_FSTYPE) + 1);
+ if (fs_type == NULL)
tst_brkm(TBROK | TERRNO, NULL, "malloc failed");
- }
- strncpy(Fstype, DEFAULT_FSTYPE, strlen(DEFAULT_FSTYPE));
- Fstype[strlen(DEFAULT_FSTYPE)] = '\0';
+
+ strncpy(fs_type, DEFAULT_FSTYPE, strlen(DEFAULT_FSTYPE));
+ fs_type[strlen(DEFAULT_FSTYPE)] = '\0';
}
if (STD_COPIES != 1) {
@@ -189,7 +170,8 @@ int main(int ac, char **av)
for (i = 0; i < TST_TOTAL; ++i) {
/* Call mount(2) */
- TEST(mount(device, mntpoint, Fstype, rwflags[i], NULL));
+ TEST(mount(device, mntpoint, fs_type,
+ rwflags[i], NULL));
/* check return code */
if (TEST_RETURN != 0) {
@@ -198,22 +180,20 @@ int main(int ac, char **av)
}
/* Validate the rwflag */
- if (test_rwflag(i, lc) == 1) {
+ if (test_rwflag(i, lc) == 1)
tst_resm(TFAIL, "mount(2) failed while"
" validating %ld", rwflags[i]);
- } else {
+ else
tst_resm(TPASS, "mount(2) passed with "
"rwflag = %ld", rwflags[i]);
- }
+
TEST(umount(mntpoint));
- if (TEST_RETURN != 0) {
+ if (TEST_RETURN != 0)
tst_brkm(TBROK | TTERRNO, cleanup,
"umount(2) failed for %s", mntpoint);
- }
}
}
- /* cleanup and exit */
cleanup();
tst_exit();
@@ -234,8 +214,9 @@ int test_rwflag(int i, int cnt)
case 0:
/* Validate MS_RDONLY flag of mount call */
- snprintf(file, PATH_MAX, "%stmp", Path_name);
- if ((fd = open(file, O_CREAT | O_RDWR, S_IRWXU)) == -1) {
+ snprintf(file, PATH_MAX, "%stmp", path_name);
+ fd = open(file, O_CREAT | O_RDWR, S_IRWXU);
+ if (fd == -1) {
if (errno == EROFS) {
return 0;
} else {
@@ -249,10 +230,11 @@ int test_rwflag(int i, int cnt)
case 1:
/* Validate MS_NODEV flag of mount call */
- snprintf(file, PATH_MAX, "%smynod_%d_%d", Path_name, getpid(),
+ snprintf(file, PATH_MAX, "%smynod_%d_%d", path_name, getpid(),
cnt);
if (mknod(file, S_IFBLK | 0777, 0) == 0) {
- if ((fd = open(file, O_RDWR, S_IRWXU)) == -1) {
+ fd = open(file, O_RDWR, S_IRWXU);
+ if (fd == -1) {
if (errno == EACCES) {
return 0;
} else {
@@ -271,8 +253,9 @@ int test_rwflag(int i, int cnt)
case 2:
/* Validate MS_NOEXEC flag of mount call */
- snprintf(file, PATH_MAX, "%stmp1", Path_name);
- if ((fd = open(file, O_CREAT | O_RDWR, S_IRWXU)) == -1) {
+ snprintf(file, PATH_MAX, "%stmp1", path_name);
+ fd = open(file, O_CREAT | O_RDWR, S_IRWXU);
+ if (fd == -1) {
tst_resm(TWARN | TERRNO, "opening %s failed", file);
} else {
close(fd);
@@ -288,9 +271,9 @@ int test_rwflag(int i, int cnt)
strcpy(write_buffer, "abcdefghijklmnopqrstuvwxyz");
/* Creat a temporary file under above directory */
- snprintf(file, PATH_MAX, "%s%s", Path_name, TEMP_FILE);
- if ((fildes = open(file, O_RDWR | O_CREAT, FILE_MODE))
- == -1) {
+ snprintf(file, PATH_MAX, "%s%s", path_name, TEMP_FILE);
+ fildes = open(file, O_RDWR | O_CREAT, FILE_MODE);
+ if (fildes == -1) {
tst_resm(TWARN | TERRNO,
"open(%s, O_RDWR|O_CREAT, %#o) failed",
file, FILE_MODE);
@@ -333,14 +316,14 @@ int test_rwflag(int i, int cnt)
case 4:
/* Validate MS_REMOUNT flag of mount call */
- TEST(mount(device, mntpoint, Fstype, MS_REMOUNT, NULL));
+ TEST(mount(device, mntpoint, fs_type, MS_REMOUNT, NULL));
if (TEST_RETURN != 0) {
tst_resm(TWARN | TTERRNO, "mount(2) failed to remount");
return 1;
} else {
- snprintf(file, PATH_MAX, "%stmp2", Path_name);
- if ((fd = open(file, O_CREAT | O_RDWR, S_IRWXU))
- == -1) {
+ snprintf(file, PATH_MAX, "%stmp2", path_name);
+ fd = open(file, O_CREAT | O_RDWR, S_IRWXU);
+ if (fd == -1) {
tst_resm(TWARN, "open(%s) on readonly "
"filesystem passed", file);
return 1;
@@ -356,23 +339,23 @@ int test_rwflag(int i, int cnt)
tst_resm(TBROK | TERRNO, "setup_uid failed");
return 1;
}
- switch (pid = fork()) {
+ pid = fork();
+ switch (pid) {
case -1:
tst_resm(TBROK | TERRNO, "fork failed");
return 1;
case 0:
- snprintf(file, PATH_MAX, "%ssetuid_test", Path_name);
- if (chmod(file, SUID_MODE) != 0) {
+ snprintf(file, PATH_MAX, "%ssetuid_test", path_name);
+ if (chmod(file, SUID_MODE) != 0)
tst_resm(TWARN, "chmod(%s, %#o) failed",
file, SUID_MODE);
- }
ltpuser = getpwnam(nobody_uid);
- if (setreuid(ltpuser->pw_uid, ltpuser->pw_uid) == -1) {
+ if (setreuid(ltpuser->pw_uid, ltpuser->pw_uid) == -1)
tst_resm(TWARN | TERRNO,
"seteuid() failed to change euid to %d",
ltpuser->pw_uid);
- }
+
execlp(file, basename(file), NULL);
exit(1);
default:
@@ -395,24 +378,21 @@ int setup_uid()
int pid, status;
char command[PATH_MAX];
- switch (pid = fork()) {
+ pid = fork();
+ switch (pid) {
case -1:
tst_resm(TWARN | TERRNO, "fork failed");
return 1;
case 0:
- Cmd_buffer[0] = cmd;
- Cmd_buffer[1] = testhome_path;
- Cmd_buffer[2] = Path_name;
-
/* Put command into string */
- sprintf(command, "%s %s %s", cmd, testhome_path, Path_name);
+ sprintf(command, "%s %s %s", cmd, testhome_path, path_name);
/* Run command to cp file to right spot */
- if (system(command) == 0) {
+ if (system(command) == 0)
execlp(file, basename(file), NULL);
- } else {
+ else
printf("call to %s failed\n", command);
- }
+
exit(1);
default:
waitpid(pid, &status, 0);
@@ -428,17 +408,16 @@ int setup_uid()
}
}
-/* setup() - performs all ONE TIME setup for this test */
void setup()
{
- char *test_home; /* variable to hold TESTHOME env */
+ char *test_home;
struct stat setuid_test_stat;
tst_sig(FORK, DEF_HANDLER, cleanup);
/* Check whether we are root */
if (geteuid() != 0) {
- free(Fstype);
+ free(fs_type);
tst_brkm(TBROK, NULL, "Test must be run as root");
}
@@ -451,38 +430,37 @@ void setup()
/* Unique mount point */
(void)sprintf(mntpoint, "mnt_%d", getpid());
- if (mkdir(mntpoint, DIR_MODE)) {
+ if (mkdir(mntpoint, DIR_MODE))
tst_brkm(TBROK | TERRNO, cleanup, "mkdir(%s, %#o) failed",
mntpoint, DIR_MODE);
- }
+
/* Get the current working directory of the process */
- if (getcwd(Path_name, sizeof(Path_name)) == NULL) {
+ if (getcwd(path_name, sizeof(path_name)) == NULL)
tst_brkm(TBROK, cleanup, "getcwd failed");
- }
- if (chmod(Path_name, DIR_MODE) != 0) {
+
+ if (chmod(path_name, DIR_MODE) != 0)
tst_brkm(TBROK, cleanup, "chmod(%s, %#o) failed",
- Path_name, DIR_MODE);
- }
- snprintf(file, PATH_MAX, "%ssetuid_test", Path_name);
+ path_name, DIR_MODE);
+
+ snprintf(file, PATH_MAX, "%ssetuid_test", path_name);
if (stat(file, &setuid_test_stat) < 0) {
tst_brkm(TBROK, cleanup, "stat for setuid_test failed");
} else {
if ((setuid_test_stat.st_uid || setuid_test_stat.st_gid) &&
- chown(file, 0, 0) < 0) {
+ chown(file, 0, 0) < 0)
tst_brkm(TBROK, cleanup,
"chown for setuid_test failed");
- }
+
if (setuid_test_stat.st_mode != SUID_MODE &&
- chmod(file, SUID_MODE) < 0) {
+ chmod(file, SUID_MODE) < 0)
tst_brkm(TBROK, cleanup,
"setuid for setuid_test failed");
- }
}
/*
* under temporary directory
*/
- snprintf(Path_name, PATH_MAX, "%s/%s/", Path_name, mntpoint);
+ snprintf(path_name, PATH_MAX, "%s/%s/", path_name, mntpoint);
strcpy(testhome_path, test_home);
strcat(testhome_path, "/setuid_test");
@@ -491,18 +469,10 @@ void setup()
}
-/*
- *cleanup() - performs all ONE TIME cleanup for this test at
- * completion or premature exit.
- */
void cleanup()
{
- free(Fstype);
+ free(fs_type);
- /*
- * print timing stats if that option was specified.
- * print errno log if that option was specified.
- */
TEST_CLEANUP;
tst_rmdir();
@@ -514,6 +484,6 @@ void cleanup()
void help()
{
printf("-T type : specifies the type of filesystem to be mounted."
- " Default ext2. \n");
- printf("-D device : device used for mounting \n");
+ "Default ext2.\n");
+ printf("-D device : device used for mounting\n");
}
--
1.8.3
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and
their applications. This 200-page book is written by three acclaimed
leaders in the field. The early access version is available now.
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
next reply other threads:[~2013-05-13 2:44 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-13 2:41 DAN LI [this message]
2013-05-13 3:12 ` [LTP] [PATCH 2/2]mount/mount03.c: fix several issues DAN LI
2013-05-13 8:41 ` Eryu Guan
2013-05-13 10:58 ` DAN LI
2013-05-13 8:26 ` [LTP] [PATCH 1/2]mount/mount03.c: cleanup Eryu Guan
2013-05-13 10:37 ` DAN LI
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=519052E3.9040801@cn.fujitsu.com \
--to=li.dan@cn.fujitsu.com \
--cc=ltp-list@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox