void set_defaults(PORANGEFS_OPTIONS options) { char module_dir[MAX_PATH], mount_point[16]; /* default CA and debug file paths */ if (get_module_dir(module_dir) == 0) { strcpy(options->ca_path, module_dir); strcat(options->ca_path, "\\CA\\cacert.pem"); strcpy(options->debug_file, module_dir); strcat(options->debug_file, "\\orangefs.log"); } /* new file/dir permissions * 0755 = rwxr-xr-x */ options->new_file_perms = options->new_dir_perms = 0755; /* default LDAP options */ options->ldap.search_scope = LDAP_SCOPE_ONELEVEL; strcpy(options->ldap.search_class, "user"); strcpy(options->ldap.naming_attr, "sAMAccountName"); strcpy(options->ldap.uid_attr, "uidNumber"); strcpy(options->ldap.gid_attr, "gidNumber"); /* default mount point */ strcpy(options->mount_point, get_default_mount_point(mount_point)); }
/* Open a module, including directory search. */ mpg123_module_t* open_module(const char* type, const char* name) { mpg123_module_t *module = NULL; char *workdir = NULL; char *moddir = NULL; workdir = get_the_cwd(); moddir = get_module_dir(); if(workdir == NULL || moddir == NULL) { error("Failure getting workdir or moddir! (Perhaps set MPG123_MODDIR?)"); if(workdir == NULL) fprintf(stderr, "Hint: I need to know the current working directory to be able to come back after hunting modules. I will not leave because I do not know where I am.\n"); if(workdir != NULL) free(workdir); if(moddir != NULL) free(moddir); return NULL; } if(chdir(moddir) == 0) module = open_module_here(type, name); else error2("Failed to enter module directory %s: %s", moddir, strerror(errno)); chdir(workdir); free(moddir); free(workdir); return module; }
/* Open a module, including directory search. */ mpg123_module_t* open_module( const char* type, const char* name, int verbose , const char* bindir ) { mpg123_module_t *module = NULL; char *moddir = NULL; moddir = get_module_dir(verbose, bindir); if(!moddir) { if(verbose > -1) error("Failure getting module directory! (Perhaps set MPG123_MODDIR?)"); return NULL; } module = open_module_here(moddir, type, name, verbose); free(moddir); return module; }
static FILE *open_config_file(char *error_msg, unsigned int error_msg_len) { FILE *f = NULL; char *file_name = NULL, module_dir[MAX_PATH]; DWORD ret = 0, malloc_flag = FALSE; /* environment variable overrides */ file_name = getenv("ORANGEFS_CONFIG_FILE"); if (file_name == NULL) file_name = getenv("PVFS2_CONFIG_FILE"); if (file_name == NULL) { /* look for file in exe directory */ ret = get_module_dir(module_dir); if (ret == 0) { file_name = (char *) malloc(MAX_PATH); malloc_flag = TRUE; strncpy(file_name, module_dir, MAX_PATH-14); strcat(file_name, "\\orangefs.cfg"); } else { _snprintf(error_msg, error_msg_len, "GetModuleFileName failed: %u\n", ret); return NULL; } } /* open config file */ f = fopen(file_name, "r"); if (f == NULL) _snprintf(error_msg, error_msg_len, "Fatal: could not open configuration file %s\n", file_name == NULL ? "(null)" : file_name); if (malloc_flag) free(file_name); return f; }
int list_modules( const char *type, char ***names, char ***descr, int verbose , const char* bindir ) { char *moddir = NULL; int count = 0; struct compat_dir *dir; char *filename; debug1("verbose:%i", verbose); *names = NULL; *descr = NULL; moddir = get_module_dir(verbose, bindir); if(moddir == NULL) { if(verbose > -1) error("Failure getting module directory! (Perhaps set MPG123_MODDIR?)"); return -1; } debug1("module dir: %s", moddir); /* Open the module directory */ dir = compat_diropen(moddir); if (dir==NULL) { if(verbose > -1) error2("Failed to open the module directory (%s): %s\n" , moddir, strerror(errno)); free(moddir); return -1; } while((filename=compat_nextfile(dir))) { /* Pointers to the pieces. */ char *module_name = NULL; char *module_type = NULL; char *uscore_pos = NULL; mpg123_module_t *module = NULL; char* ext; size_t name_len; /* Various checks as loop shortcuts, avoiding too much nesting. */ debug1("checking entry: %s", filename); name_len = strlen(filename); if(name_len < strlen(LT_MODULE_EXT)) goto list_modules_continue; ext = filename + name_len - strlen(LT_MODULE_EXT); if(strcmp(ext, LT_MODULE_EXT)) goto list_modules_continue; debug("has suffix"); /* Extract the module type and name */ uscore_pos = strchr( filename, '_' ); if( uscore_pos==NULL || (uscore_pos>=filename+name_len+1) ) { debug("no underscore"); goto list_modules_continue; } *uscore_pos = '\0'; module_type = filename; module_name = uscore_pos+1; /* Only list modules of desired type. */ if(strcmp(type, module_type)) { debug("wrong type"); goto list_modules_continue; } debug("has type"); /* Extract the short name of the module */ name_len -= uscore_pos - filename + 1; if(name_len <= strlen(LT_MODULE_EXT)) { debug("name too short"); goto list_modules_continue; } name_len -= strlen(LT_MODULE_EXT); module_name[name_len] = '\0'; debug("opening module"); /* Open the module Yes, this re-builds the file name we chopped to pieces just now. */ if((module=open_module_here(moddir, module_type, module_name, verbose))) { if( stringlists_add( names, descr , module->name, module->description, &count) ) if(verbose > -1) error("OOM"); /* Close the module again */ close_module(module, verbose); } list_modules_continue: free(filename); } compat_dirclose(dir); return count; }
void list_modules() { DIR* dir = NULL; struct dirent *dp = NULL; char *workdir = NULL; char *moddir = NULL; moddir = get_module_dir(); /* Open the module directory */ dir = opendir(moddir); if (dir==NULL) { error2("Failed to open the module directory (%s): %s\n", PKGLIBDIR, strerror(errno)); free(moddir); exit(-1); } workdir = get_the_cwd(); if(chdir(moddir) != 0) { error2("Failed to enter module directory (%s): %s\n", PKGLIBDIR, strerror(errno)); closedir( dir ); free(workdir); free(moddir); exit(-1); } /* Display the program title */ /* print_title(stderr); */ /* List the output modules */ printf("\n"); printf("Available modules\n"); printf("-----------------\n"); while( (dp = readdir(dir)) != NULL ) { struct stat fst; if(stat(dp->d_name, &fst) != 0) continue; if(S_ISREG(fst.st_mode)) /* Allow links? */ { char* ext = dp->d_name + strlen( dp->d_name ) - strlen( MODULE_FILE_SUFFIX ); if (strcmp(ext, MODULE_FILE_SUFFIX) == 0) { char *module_name = NULL; char *module_type = NULL; char *uscore_pos = NULL; mpg123_module_t *module = NULL; /* Extract the module type */ module_type = strdup( dp->d_name ); uscore_pos = strchr( module_type, '_' ); if (uscore_pos==NULL || (uscore_pos>=module_type+strlen(module_type)+1) ) { free(module_type); continue; } *uscore_pos = '\0'; /* Extract the short name of the module */ module_name = strdup( dp->d_name + strlen( module_type ) + 1 ); module_name[ strlen( module_name ) - strlen( MODULE_FILE_SUFFIX ) ] = '\0'; /* Open the module */ module = open_module_here(module_type, module_name); if (module) { printf("%-15s%s %s\n", module->name, module_type, module->description ); /* Close the module again */ close_module( module ); } free( module_name ); free( module_type ); } } } chdir(workdir); free(workdir); closedir( dir ); free(moddir); exit(0); }