[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