[Ocfs2-tools-commits] manish commits r836 - trunk/ocfs2cdsl

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Fri Apr 22 21:36:57 CDT 2005


Author: manish
Date: 2005-04-22 21:36:53 -0500 (Fri, 22 Apr 2005)
New Revision: 836

Modified:
   trunk/ocfs2cdsl/Makefile
   trunk/ocfs2cdsl/ocfs2cdsl.c
Log:
Code reorg, use com_err, quote filenames in display strings


Modified: trunk/ocfs2cdsl/Makefile
===================================================================
--- trunk/ocfs2cdsl/Makefile	2005-04-22 08:20:31 UTC (rev 835)
+++ trunk/ocfs2cdsl/Makefile	2005-04-23 02:36:53 UTC (rev 836)
@@ -8,15 +8,30 @@
 OPTS = -g
 endif
 
+LIBOCFS2_CFLAGS = -I$(TOPDIR)/libocfs2/include
+LIBOCFS2_LIBS = -L$(TOPDIR)/libocfs2 -locfs2
+LIBOCFS2_DEPS = $(TOPDIR)/libocfs2/libocfs2.a 
+
+LIBO2DLM_CFLAGS = -I$(TOPDIR)/libo2dlm/include
+LIBO2DLM_LIBS = -L$(TOPDIR)/libo2dlm -lo2dlm
+LIBO2DLM_DEPS = $(TOPDIR)/libo2dlm/libo2dlm.a
+
+LIBO2CB_CFLAGS = -I$(TOPDIR)/libo2cb/include
+LIBO2CB_LIBS = -L$(TOPDIR)/libo2cb -lo2cb
+LIBO2CB_DEPS = $(TOPDIR)/libo2cb/libo2cb.a
+
 CFLAGS = $(OPTS) $(WARNINGS) 
 
 SBIN_PROGRAMS = ocfs2cdsl
 
-DEFINES = -DG_DISABLE_DEPRECATED -DVERSION=\"$(VERSION)\"
-INCLUDES = $(GLIB_CFLAGS)
+DEFINES = -DVERSION=\"$(VERSION)\"
+DEFINES += -DOCFS2_FLAT_INCLUDES -DO2DLM_FLAT_INCLUDES -DO2CB_FLAT_INCLUDES
+DEFINES += -DG_DISABLE_DEPRECATED
 
-OPTIMIZE = -g -O2
+INCLUDES = $(LIBOCFS2_CFLAGS) $(LIBO2DLM_CFLAGS) $(LIBO2CB_CFLAGS) $(GLIB_CFLAGS)
 
+OPTIMIZE = -O0
+
 CFLAGS += $(OPTIMIZE)
 
 CFILES = ocfs2cdsl.c
@@ -29,6 +44,6 @@
 DIST_FILES = $(CFILES) ocfs2cdsl.8.in
 
 ocfs2cdsl: $(OBJS)
-	$(LINK) $(GLIB_LIBS)
+	$(LINK) $(GLIB_LIBS) $(COM_ERR_LIBS)
 
 include $(TOPDIR)/Postamble.make

Modified: trunk/ocfs2cdsl/ocfs2cdsl.c
===================================================================
--- trunk/ocfs2cdsl/ocfs2cdsl.c	2005-04-22 08:20:31 UTC (rev 835)
+++ trunk/ocfs2cdsl/ocfs2cdsl.c	2005-04-23 02:36:53 UTC (rev 836)
@@ -43,8 +43,8 @@
 
 #include <glib.h>
 
+#include "ocfs2.h"
 
-#define OCFS_MAGIC 0xa156f7eb
 
 #define CDSL_BASE  ".cluster"
 
@@ -80,6 +80,8 @@
 	char *progname;
 
 	gboolean copy;
+	gboolean local;
+
 	gboolean force;
 	gboolean dry_run;
 
@@ -88,15 +90,21 @@
 
 	CDSLType type;
 
+	char *dirname;
+	char *quoted_dirname;
+
 	char *filename;
-	char *dirname;
+	char *quoted_filename;
+
 	char *fullname;
+	char *quoted_fullname;
 };
 
 
 static State *get_state (int argc, char **argv);
 static void usage(const char *progname);
 static void version(const char *progname);
+static char *verify_ocfs2(State *s);
 static char *get_ocfs2_root(const char *path);
 static CDSLType cdsl_type_from_string(const char *str);
 static char *cdsl_path_expand(State *s);
@@ -114,48 +122,30 @@
 {
 	State *s;
 	char *fsroot, *path;
-	char *cmd, *cmd_err;
+	char *cmd, *cmd_err, *quoted;
 	int ret;
-	struct statfs sbuf;
 	gboolean exists;
 	char *cdsl_path, *cdsl_full;
-	char *target;
+	char *target, *quoted_target;
 	GError *error = NULL;
 
 	s = get_state(argc, argv);
 
-	if (statfs(s->dirname, &sbuf) != 0) {
-		fprintf(stderr, "%s: couldn't statfs %s: %s\n",
-			s->progname, s->dirname, g_strerror(errno));
-		exit(1);
-	}
+	fsroot = verify_ocfs2(s);
 
-	if (sbuf.f_type != OCFS_MAGIC) {
-		fprintf(stderr, "%s: %s is not on an ocfs2 filesystem\n",
-			s->progname, s->filename);
-		exit(1);
-	}
+	exists = g_file_test(s->fullname, G_FILE_TEST_EXISTS);
 
-	fsroot = get_ocfs2_root(s->dirname);
-
-	if (fsroot == NULL) {
-		fprintf(stderr, "%s: %s is not on an ocfs2 filesystem\n",
-			s->progname, s->dirname);
-		exit(1);
-	}
-
-	exists = g_file_test(s->fullname, G_FILE_TEST_EXISTS);
 	if (exists) {
 		if (!g_file_test(s->fullname,
 				 G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_DIR)) {
-			fprintf(stderr, "%s: %s is not a file or directory\n",
-				s->progname, s->fullname);
+			com_err(s->progname, 0, "%s is not a file or directory",
+				s->quoted_fullname);
 			exit(1);
 		}
 	}
 	else if (s->copy) {
-		fprintf(stderr, "%s: %s does not exist, but copy requested\n",
-			s->progname, s->fullname);
+		com_err(s->progname, 0, "%s does not exist, but copy requested",
+			s->quoted_fullname);
 		exit(1);
 	}
 
@@ -165,9 +155,10 @@
 			exists = FALSE;
 		}
 		else {
-			fprintf(stderr, "%s: %s already exists, but copy (-c) "
-					"or force (-f) not given\n",
-				s->progname, s->fullname);
+			com_err(s->progname, 0,
+				"%s already exists, but copy (-c) or "
+				"force (-f) not given",
+				s->quoted_fullname);
 			exit(1);
 		}
 	}
@@ -178,7 +169,9 @@
 		cdsl_path = g_build_filename(fsroot, cdsl_path_expand(s),
 					     path, NULL);
 
-		cmd = g_strdup_printf("mkdir -p %s", g_shell_quote(cdsl_path));
+		quoted = g_shell_quote(cdsl_path);
+		cmd = g_strdup_printf("mkdir -p %s", quoted);
+		g_free(quoted);
 
 		if (s->verbose || s->dry_run)
 			printf("%s\n", cmd);
@@ -186,14 +179,15 @@
 		if (!s->dry_run) {
 			if (!g_spawn_command_line_sync(cmd, NULL, &cmd_err,
 						       &ret, &error)) {
-				fprintf(stderr, "%s: Couldn't mkdir: %s\n",
-					s->progname, error->message);
+				com_err(s->progname, 0,
+					"could not run mkdir: %s",
+					error->message);
 				exit(1);
 			}
 
 			if (ret != 0) {
-				fprintf(stderr, "%s: mkdir error: %s\n",
-					s->progname, cmd_err);
+				com_err(s->progname, 0, "mkdir error: %s",
+					cmd_err);
 				exit(1);
 			}
 		}
@@ -206,22 +200,24 @@
 			if (s->force)
 				delete(s, cdsl_full);
 			else {
-				fprintf(stderr, "%s: CDSL already exists. "
-						"To replace, use the force "
-						"(-f) option\n",
-					s->progname);
+				com_err(s->progname, 0,
+					"CDSL already exists. To replace, use "
+					"the force (-f) option");
 				exit(1);
 			}
 		}
 
-		if (s->verbose || s->dry_run)
-			printf("mv %s %s\n", s->fullname, cdsl_full);
+		if (s->verbose || s->dry_run) {
+			quoted = g_shell_quote(cdsl_full);
+			printf("mv %s %s\n", s->quoted_fullname, quoted);
+			g_free(quoted);
+		}
 
 		if (!s->dry_run) {
 			if (rename(s->fullname, cdsl_full) != 0) {
-				fprintf(stderr, "%s: could not rename %s: %s\n",
-					s->progname, s->filename,
-					g_strerror(errno));
+				com_err(s->progname, errno,
+					"could not rename %s",
+					s->quoted_fullname);
 				exit(1);
 			}
 		}
@@ -231,19 +227,21 @@
 	}
 
 	target = g_build_filename(cdsl_target(s, path), s->filename, NULL);
+	quoted_target = g_shell_quote(target);
 
 	if (s->verbose || s->dry_run)
-		printf("ln -s %s %s\n", target, s->fullname);
+		printf("ln -s %s %s\n", quoted_target, s->quoted_fullname);
 
 	if (!s->dry_run) {
 		if (symlink(target, s->fullname) != 0) {
-			fprintf(stderr, "%s: could not symlink %s to %s: %s\n",
-				s->progname, target, s->fullname,
-				g_strerror(errno));
+			com_err(s->progname, errno,
+				"could not symlink %s to %s",
+				quoted_target, s->quoted_fullname);
 			exit(1);
 		}
 	}
 
+	g_free(quoted_target);
 	g_free(target);
 
 	return 0;
@@ -253,7 +251,7 @@
 get_state(int argc, char **argv)
 {
 	char *progname;
-	gboolean copy = FALSE, force = FALSE, dry_run = FALSE;
+	gboolean copy = FALSE, local = FALSE, force = FALSE, dry_run = FALSE;
 	gboolean quiet = FALSE, verbose = FALSE, show_version = FALSE;
 	CDSLType type = CDSL_TYPE_HOSTNAME;
 	char *filename, *dirname, *tmp;
@@ -263,6 +261,7 @@
 	static struct option long_options[] = {
 		{ "type", 1, 0, 't' },
 		{ "copy", 0, 0, 'c' },
+		{ "local", 0, 0, 'L' },
 		{ "force", 0, 0, 'f' },
 		{ "dry-run", 0, 0, 'n' },
 		{ "verbose", 0, 0, 'v' },
@@ -277,7 +276,7 @@
 		progname = g_strdup("ocfs2cdsl");
 
 	while (1) {
-		c = getopt_long(argc, argv, "t:acfnvqV", long_options, NULL);
+		c = getopt_long(argc, argv, "t:acLfnvqV", long_options, NULL);
 
 		if (c == -1)
 			break;
@@ -295,6 +294,9 @@
 		case 'c':
 			copy = TRUE;
 			break;
+		case 'L':
+			local = TRUE;
+			break;
 		case 'f':
 			force = TRUE;
 			break;
@@ -340,6 +342,9 @@
 	if (optind < argc)
 		usage(progname);
 
+	if (local)
+		copy = TRUE;
+
 	s = g_new0(State, 1);
 
 	s->progname = progname;
@@ -347,6 +352,8 @@
 	s->type     = type;
 
 	s->copy     = copy;
+	s->local    = local;
+
 	s->force    = force;
 	s->dry_run  = dry_run;
 
@@ -360,6 +367,10 @@
 
 	free(dirname);
 
+	s->quoted_dirname  = g_shell_quote(s->dirname);
+	s->quoted_filename = g_shell_quote(s->filename);
+	s->quoted_fullname = g_shell_quote(s->fullname);
+
 	return s;
 }
 
@@ -368,7 +379,7 @@
 {
 	const char * const *name;
 
-	fprintf(stderr, "Usage: %s [-cfnqvV] [-t", progname);
+	fprintf(stderr, "Usage: %s [-cLfnqvV] [-t", progname);
 
 	for (name = cdsl_names; *name; name++)
 		fprintf(stderr, " %s", *name);
@@ -380,7 +391,7 @@
 static void
 version(const char *progname)
 {
-	fprintf(stderr, "%s %s\n", progname, VERSION);
+	printf("%s %s\n", progname, VERSION);
 }
 
 static CDSLType
@@ -398,6 +409,35 @@
 }
 
 static char *
+verify_ocfs2(State *s)
+{
+	struct statfs sbuf;
+	char *fsroot;
+
+	if (statfs(s->dirname, &sbuf) != 0) {
+		com_err(s->progname, errno, "could not statfs %s",
+			s->quoted_dirname);
+		exit(1);
+	}
+
+	if (sbuf.f_type != OCFS2_SUPER_MAGIC) {
+		com_err(s->progname, 0, "%s is not on an ocfs2 filesystem",
+			s->quoted_fullname);
+		exit(1);
+	}
+
+	fsroot = get_ocfs2_root(s->dirname);
+
+	if (fsroot == NULL) {
+		com_err(s->progname, 0, "%s is not on an ocfs2 filesystem",
+			s->quoted_fullname);
+		exit(1);
+	}
+
+	return fsroot;
+}
+
+static char *
 get_ocfs2_root(const char *path)
 {
 	struct mntent *mnt;
@@ -530,14 +570,13 @@
 	if (!s->dry_run) {
 		if (!g_spawn_command_line_sync(cmd, NULL, &cmd_err, &ret,
 					       &error)) {
-			fprintf(stderr, "%s: Couldn't rm: %s\n", s->progname,
+			com_err(s->progname, 0, "could not run rm: %s",
 				error->message);
 			exit(1);
 		}
 
 		if (ret != 0) {
-			fprintf(stderr, "%s: rm error: %s\n", s->progname,
-				cmd_err);
+			com_err(s->progname, 0, "rm error: %s", cmd_err);
 			exit(1);
 		}
 	}
@@ -554,8 +593,8 @@
 	int i;
 
 	if (stat(s->dirname, &sbuf) != 0) {
-		fprintf(stderr, "%s: couldn't stat %s: %s\n",
-			s->progname, s->dirname, g_strerror(errno));
+		com_err(s->progname, errno, "could not stat %s",
+			s->quoted_dirname);
 		exit(1);
 	}
 
@@ -566,14 +605,12 @@
 	f = fopen(path, "r");
 
 	if (f == NULL) {
-		fprintf(stderr, "%s: could not open %s: %s\n",
-			s->progname, path, g_strerror(errno));
+		com_err(s->progname, errno, "could not open %s", path);
 		exit(1);
 	}
 
 	if (fgets(buf, sizeof(buf), f) == NULL) {
-		fprintf(stderr, "%s: could not read node number: %s\n",
-			s->progname, g_strerror(errno));
+		com_err(s->progname, errno, "could not read node number");
 		exit(1);
 	}
 
@@ -589,8 +626,7 @@
 	}
 
 	if (buf[0] == '\0') {
-		fprintf(stderr, "%s: invalid node number: %s\n",
-			s->progname, g_strerror(errno));
+		com_err(s->progname, 0, "could not read node number");
 		exit(1);
 	}
 



More information about the Ocfs2-tools-commits mailing list