Attached patch adds command line args for PID file and logging std out/err to files. In addition the patch modifies vblade to detach from controlling terminal.
Patch is against vblade-20 -- James R. Leu Software Architect INOC 608.204.0203 608.663.4555 fax [email protected] www.inoc.com *** DELIVERING UPTIME ***
diff -uNr vblade-20/aoe.c vblade-20-jleu/aoe.c
--- vblade-20/aoe.c 2009-08-14 13:39:26.000000000 -0500
+++ vblade-20-jleu/aoe.c 2011-08-11 11:01:24.000000000 -0500
@@ -379,7 +379,7 @@
void
usage(void)
{
- fprintf(stderr, "usage: %s [-b bufcnt] [-d ] [-s] [-r] [ -m
mac[,mac...] ] shelf slot netif filename\n",
+ fprintf(stderr, "usage: %s [-b bufcnt] [-d ] [-s] [-r] [-p file] [-l
dir] [ -m mac[,mac...] ] shelf slot netif filename\n",
progname);
exit(1);
}
@@ -462,11 +462,16 @@
main(int argc, char **argv)
{
int ch, omode = 0, readonly = 0;
+ long pid;
+ char *pfile = NULL;
+ char *ldir = NULL;
+ char outfile[1024];
+ char errfile[1024];
bufcnt = Bufcount;
setbuf(stdin, NULL);
progname = *argv;
- while ((ch = getopt(argc, argv, "b:dsrm:")) != -1) {
+ while ((ch = getopt(argc, argv, "b:dsrm:p:l:")) != -1) {
switch (ch) {
case 'b':
bufcnt = atoi(optarg);
@@ -482,6 +487,12 @@
case 'r':
readonly = 1;
break;
+ case 'p':
+ pfile = optarg;
+ break;
+ case 'l':
+ ldir = optarg;
+ break;
case 'm':
setmask(optarg);
break;
@@ -506,14 +517,57 @@
size = getsize(bfd);
size /= 512;
ifname = argv[2];
+
+ if (ldir) {
+ if (snprintf(outfile, 1024, "%s/vblade-%d-%d.out", ldir, shelf,
slot) < 0) {
+ perror("outfile");
+ exit(1);
+ }
+ if (snprintf(errfile, 1024, "%s/vblade-%d-%d.out", ldir, shelf,
slot) < 0) {
+ perror("errfile");
+ exit(1);
+ }
+ } else {
+ if (snprintf(outfile, 1024, "/dev/null") < 0) {
+ perror("outfile");
+ exit(1);
+ }
+ if (snprintf(errfile, 1024, "/dev/null") < 0) {
+ perror("errfile");
+ exit(1);
+ }
+ }
+
+ pid = fork();
+ if (pid < 0) {
+ /* error */
+ perror("fork");
+ exit(1);
+ }
+ if (pid > 0) {
+ /* parent */
+ if (pfile) {
+ FILE *handle = fopen(pfile, "w");
+ if (handle) {
+ fprintf(handle, "%ld\n", pid);
+ fclose(handle);
+ }
+ }
+ printf("pid %ld: e%d.%d, %lld sectors %s\n",
+ pid, shelf, slot, size,
+ readonly ? "O_RDONLY" : "O_RDWR");
+ fflush(stdout);
+ exit(0);
+ }
+
+ /* child */
+ freopen(outfile, "a+", stdout);
+ freopen(errfile, "a+", stderr);
+ setsid();
+
sfd = dial(ifname, bufcnt);
getea(sfd, ifname, mac);
- printf("pid %ld: e%d.%d, %lld sectors %s\n",
- (long) getpid(), shelf, slot, size,
- readonly ? "O_RDONLY" : "O_RDWR");
- fflush(stdout);
atainit();
aoe();
return 0;
}
-
pgpTSZIQ1p8hi.pgp
Description: PGP signature
------------------------------------------------------------------------------ FREE DOWNLOAD - uberSVN with Social Coding for Subversion. Subversion made easy with a complete admin console. Easy to use, easy to manage, easy to install, easy to extend. Get a Free download of the new open ALM Subversion platform now. http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________ Aoetools-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/aoetools-discuss
