--- /dev/null
+Bottom: 09bc4f43699418809ec483f853154e9581482fc0
+Top: a9a7ff03d17186f855af81adb232170085e921d9
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2010-07-28 16:28:02 -0700
+
+Refresh of cfg
+
+---
+
+diff --git a/linux/osd.h b/linux/osd.h
+old mode 100644
+new mode 100755
+index dc8bc1f..722e1b1
+--- a/linux/osd.h
++++ b/linux/osd.h
+@@ -39,11 +39,16 @@
+ #include <pthread.h>\r
+ #include <sys/socket.h>\r
+ #include <sys/types.h>\r
++#include <sys/stat.h>\r
+ #include <malloc.h>\r
+ #include <arpa/inet.h>\r
+ #include <sys/time.h>\r
+ #include <netinet/in.h>\r
+ \r
++#define ACM_DEST_DIR "/etc/ibacm"\r
++#define ACM_ADDR_FILE "acm_addr.cfg"\r
++#define ACM_OPTS_FILE "acm_opts.cfg"\r
++\r
+ #define LIB_DESTRUCTOR __attribute__((destructor))\r
+ #define CDECL_FUNC\r
+ \r
+diff --git a/src/acm.c b/src/acm.c
+index afa9917..48e622d 100755
+--- a/src/acm.c
++++ b/src/acm.c
+@@ -2642,9 +2642,9 @@ static void show_usage(char *program)
+ printf("usage: %s\n", program);
+ printf(" [-D] - run as a daemon\n");
+ printf(" [-A addr_file] - address configuration file\n");
+- printf(" (default /etc/ibacm/acm_addr.cfg\n");
++ printf(" (default %s/%s\n", ACM_DEST_DIR, ACM_ADDR_FILE);
+ printf(" [-O option_file] - option configuration file\n");
+- printf(" (default /etc/ibacm/acm_opts.cfg\n");
++ printf(" (default %s/%s\n", ACM_DEST_DIR, ACM_OPTS_FILE);
+ }
+
+ int CDECL_FUNC main(int argc, char **argv)
+diff --git a/src/acme.c b/src/acme.c
+index 283002b..03e96ad 100755
+--- a/src/acme.c
++++ b/src/acme.c
+@@ -39,9 +39,10 @@
+ #include <infiniband/acm.h>
+ #include "libacm.h"
+
+-static char dest_dir = "/etc/ibacm";
+-static char opts_file = "acm_opts.cfg";
+-static char addr_file = "acm_addr.cfg";
++static char *dest_dir = ACM_DEST_DIR;
++static char *addr_file = ACM_ADDR_FILE;
++static char *opts_file = ACM_OPTS_FILE;
++
+ static char *dest_addr;
+ static char *src_addr;
+ static char addr_type = 'i';
+@@ -64,11 +65,11 @@ static void show_usage(char *program)
+ printf(" [-v] - verify ACM response against SA query response\n");
+ printf("usage 2: %s\n", program);
+ printf(" -A [addr_file] - generate local address configuration file\n");
+- printf(" (default is acm_addr.cfg)\n");
++ printf(" (default is %s)\n", ACM_ADDR_FILE);
+ printf(" -O [opt_file] - generate local acm_opts.cfg options file\n");
+- printf(" (default is acm_opts.cfg)\n");
++ printf(" (default is %s)\n", ACM_OPTS_FILE);
+ printf(" -D dest_dir - specify destination directory for output files\n");
+- printf(" (default is /etc/ibacm)\n");
++ printf(" (default is %s)\n", ACM_DEST_DIR);
+ }
+
+ static void gen_opts_temp(FILE *f)
+@@ -193,13 +194,22 @@ static void gen_opts_temp(FILE *f)
+ fprintf(f, "\n");
+ }
+
++static int open_dir(void)
++{
++ mkdir(dest_dir, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
++ if (chdir(dest_dir)) {
++ printf("Failed to open directory %s: %s\n", dest_dir, strerror(errno));
++ return -1;
++ }
++ return 0;
++}
++
+ static int gen_opts(void)
+ {
+ FILE *f;
+
+- printf("Generating acm_opts.cfg\n");
+- mkdir(dest_dir, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);
+- if (!(f = fopen(opts_file, "w"))) {
++ printf("Generating %s/%s\n", dest_dir, opts_file);
++ if (open_dir() || !(f = fopen(opts_file, "w"))) {
+ printf("Failed to open option configuration file: %s\n", strerror(errno));
+ return -1;
+ }
+@@ -333,9 +343,8 @@ static int gen_addr(void)
+ FILE *f;
+ int ret;
+
+- printf("Generating acm_addr.cfg\n");
+- mkdir(dest_dir, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);
+- if (!(f = fopen(addr_file, "w"))) {
++ printf("Generating %s/%s\n", dest_dir, addr_file);
++ if (open_dir() || !(f = fopen(addr_file, "w"))) {
+ printf("Failed to open address configuration file: %s\n", strerror(errno));
+ return -1;
+ }
+@@ -502,6 +511,17 @@ static int resolve(char *program)
+ return ret;
+ }
+
++char *opt_arg(int argc, char **argv)
++{
++ if (optarg)
++ return optarg;
++
++ if ((optind < argc) && (argv[optind][0] != '-'))
++ return argv[optind];
++
++ return NULL;
++}
++
+ int CDECL_FUNC main(int argc, char **argv)
+ {
+ int op, ret;
+@@ -526,19 +546,16 @@ int CDECL_FUNC main(int argc, char **argv)
+ break;
+ case 'A':
+ make_addr = 1;
+- if (optarg)
+- addr_file = optarg;
+-printf("set addr file to %s\n", addr_file);
++ if (opt_arg(argc, argv))
++ addr_file = opt_arg(argc, argv);
+ break;
+ case 'O':
+ make_opts = 1;
+- if (optarg)
+- opt_file = optarg;
+-printf("set opt file to %s\n", addr_file);
++ if (opt_arg(argc, argv))
++ opts_file = opt_arg(argc, argv);
+ break;
+ case 'D':
+ dest_dir = optarg;
+-printf("set dest dir to %s\n", dest_dir);
+ break;
+ default:
+ show_usage(argv[0]);