int main(int argc, char *argv[]) { char *outfile = "corr.dat"; satdata_eef *eef1 = NULL; satdata_eef *eef2 = NULL; int c; while ((c = getopt(argc, argv, "a:b:")) != (-1)) { switch (c) { case 'a': fprintf(stderr, "main: reading profile data from %s...", optarg); eef1 = profile_read(optarg); fprintf(stderr, "done (%zu data read)\n", eef1->n); break; case 'b': fprintf(stderr, "main: reading profile data from %s...", optarg); eef2 = profile_read(optarg); fprintf(stderr, "done (%zu data read)\n", eef2->n); break; default: exit(1); } } if (!eef1 || !eef2) { fprintf(stderr, "Usage: %s <-a profile_ascii_file> <-b profile_ascii_file>\n", argv[0]); exit(1); } { size_t ncorr; fprintf(stderr, "main: writing correlation data to %s...", outfile); ncorr = docorr(outfile, eef1, eef2); fprintf(stderr, "done (%zu equator crossing pairs found)\n", ncorr); } satdata_eef_free(eef1); satdata_eef_free(eef2); return 0; } /* main() */
void os_config_write_uint(const char *section, const char *name, unsigned int value) { Profile *p = profile_read(Osreg_config_file_name); #ifdef WIN32 // When there is no config file then it shouldn't be created because that would "hide" all previous settings // Instead fall back to writing the settings to the config file if (p == nullptr) { registry_write_uint(section, name, value); return; } #endif if (section == NULL) section = DEFAULT_SECTION; char buf[21]; snprintf(buf, 20, "%u", value); p = profile_update(p, section, name, buf); profile_save(p, Osreg_config_file_name); profile_free(p); }
const char *os_config_read_string(const char *section, const char *name, const char *default_value) { Profile *p = profile_read(Osreg_config_file_name); #ifdef WIN32 if (p == nullptr) { // No config file, fall back to registy return registry_read_string(section, name, default_value); } #endif nprintf(("Registry", "os_config_read_string(): section = \"%s\", name = \"%s\", default value: \"%s\"\n", (section) ? section : DEFAULT_SECTION, name, (default_value) ? default_value : NOX("NULL"))); if (section == NULL) section = DEFAULT_SECTION; char *ptr = profile_get_value(p, section, name); if (ptr != NULL) { strncpy(tmp_string_data, ptr, 1023); default_value = tmp_string_data; } profile_free(p); return default_value; }
// find and read the profile specified by name from dir directory int profile_find(const char *name, const char *dir) { EUID_ASSERT(); assert(name); assert(dir); int rv = 0; DIR *dp; char *pname; if (asprintf(&pname, "%s.profile", name) == -1) errExit("asprintf"); dp = opendir (dir); if (dp != NULL) { struct dirent *ep; while ((ep = readdir(dp)) != NULL) { if (strcmp(ep->d_name, pname) == 0) { if (arg_debug) printf("Found %s profile in %s directory\n", name, dir); char *etcpname; if (asprintf(&etcpname, "%s/%s", dir, pname) == -1) errExit("asprintf"); profile_read(etcpname); free(etcpname); rv = 1; break; } } (void) closedir (dp); } free(pname); return rv; }
unsigned int os_config_read_uint(const char *section, const char *name, unsigned int default_value) { Profile *p = profile_read(Osreg_config_file_name); #ifdef WIN32 if (p == nullptr) { // No config file, fall back to registy return registry_read_uint(section, name, default_value); } #endif if (section == NULL) section = DEFAULT_SECTION; char *ptr = profile_get_value(p, section, name); if (ptr != NULL) { default_value = atoi(ptr); } profile_free(p); return default_value; }
/* PROGRAM: rm2name AUTHOR: hbarbosa DATE: May, 2011 USE: rm2name <file1> [<file2> ... ] INTENT: This is a very simple program that reads a list of Raymetrics/Licel files and, for each file, print a string to the screen with the following format: RM_YYYY-MM-DD_hh:mm. This could be used, for example, in a script that will rename the files. */ int main (int argc, char *argv[]) { RMDataFile XX; RM_Date last; int err; if (argc<2) { printf("Enter a file name!\n"); return 1; } for (int i=1; i<argc; i++) { //if (access(argv[1], F_OK)) { // printf("File does not exist!\n"); // return 1; //} // Init, Read, Print some data Init_RMDataFile(&XX); err=profile_read(argv[1], &XX); // Create string for output if (!err) { last=XX.end; last.RoundMinutes(); printf("RM_%s_%02d:%02d\n",last.write2YMD('-').c_str(), last.GetHour(), last.GetMin()); } // destroy RM data file Free_RMDataFile(&XX); } return 0; }
void profile_read(const char *fname) { EUID_ASSERT(); // exit program if maximum include level was reached if (include_level > MAX_INCLUDE_LEVEL) { fprintf(stderr, "Error: maximum profile include level was reached\n"); exit(1); } // check file invalid_filename(fname); if (strlen(fname) == 0 || is_dir(fname)) { fprintf(stderr, "Error: invalid profile file\n"); exit(1); } if (access(fname, R_OK)) { // if the file ends in ".local", do not exit const char *base = gnu_basename(fname); char *ptr = strstr(base, ".local"); if (ptr && strlen(ptr) == 6) return; fprintf(stderr, "Error: cannot access profile file\n"); exit(1); } // allow debuggers if (arg_allow_debuggers) { char *tmp = strrchr(fname, '/'); if (tmp && *(tmp + 1) != '\0') { tmp++; if (strcmp(tmp, "disable-devel.inc") == 0) return; } } // open profile file: FILE *fp = fopen(fname, "r"); if (fp == NULL) { fprintf(stderr, "Error: cannot open profile file %s\n", fname); exit(1); } int msg_printed = 0; // read the file line by line char buf[MAX_READ + 1]; int lineno = 0; while (fgets(buf, MAX_READ, fp)) { ++lineno; // remove empty space - ptr in allocated memory char *ptr = line_remove_spaces(buf); if (ptr == NULL) continue; // comments if (*ptr == '#' || *ptr == '\0') { free(ptr); continue; } // process quiet if (strcmp(ptr, "quiet") == 0) { arg_quiet = 1; free(ptr); continue; } if (!msg_printed) { if (!arg_quiet) fprintf(stderr, "Reading profile %s\n", fname); msg_printed = 1; } // process include if (strncmp(ptr, "include ", 8) == 0) { include_level++; // extract profile filename and new skip params char *newprofile = ptr + 8; // profile name // expand ${HOME}/ in front of the new profile file char *newprofile2 = expand_home(newprofile, cfg.homedir); // recursivity profile_read((newprofile2)? newprofile2:newprofile); include_level--; if (newprofile2) free(newprofile2); free(ptr); continue; } // verify syntax, exit in case of error if (profile_check_line(ptr, lineno, fname)) profile_add(ptr); // we cannot free ptr here, data is extracted from ptr and linked as a pointer in cfg structure // else { // free(ptr); // } #ifdef HAVE_GCOV __gcov_flush(); #endif } fclose(fp); }
void profile_read(const char *fname) { EUID_ASSERT(); // exit program if maximum include level was reached if (include_level > MAX_INCLUDE_LEVEL) { fprintf(stderr, "Error: maximum profile include level was reached\n"); exit(1); } if (strlen(fname) == 0) { fprintf(stderr, "Error: invalid profile file\n"); exit(1); } // open profile file: FILE *fp = fopen(fname, "r"); if (fp == NULL) { fprintf(stderr, "Error: cannot open profile file %s\n", fname); exit(1); } if (!arg_quiet) fprintf(stderr, "Reading profile %s\n", fname); // read the file line by line char buf[MAX_READ + 1]; int lineno = 0; while (fgets(buf, MAX_READ, fp)) { ++lineno; // remove empty space - ptr in allocated memory char *ptr = line_remove_spaces(buf); if (ptr == NULL) continue; // comments if (*ptr == '#' || *ptr == '\0') { free(ptr); continue; } // process include if (strncmp(ptr, "include ", 8) == 0) { include_level++; // extract profile filename and new skip params char *newprofile = ptr + 8; // profile name // expand ${HOME}/ in front of the new profile file char *newprofile2 = expand_home(newprofile, cfg.homedir); // recursivity profile_read((newprofile2)? newprofile2:newprofile); include_level--; if (newprofile2) free(newprofile2); free(ptr); continue; } // verify syntax, exit in case of error if (profile_check_line(ptr, lineno, fname)) profile_add(ptr); // we cannot free ptr here, data is extracted from ptr and linked as a pointer in cfg structure // else { // free(ptr); // } } fclose(fp); }
// skip1, skip2 - if the string is found in the line, the line is not interpreted void profile_read(const char *fname, const char *skip1, const char *skip2) { // exit program if maximum include level was reached if (include_level > MAX_INCLUDE_LEVEL) { fprintf(stderr, "Error: maximum profile include level was reached\n"); exit(1); } if (strlen(fname) == 0) { fprintf(stderr, "Error: invalid profile file\n"); exit(1); } // open profile file: FILE *fp = fopen(fname, "r"); if (fp == NULL) { fprintf(stderr, "Error: cannot open profile file\n"); exit(1); } if (!arg_quiet) fprintf(stderr, "Reading profile %s\n", fname); // read the file line by line char buf[MAX_READ + 1]; int lineno = 0; while (fgets(buf, MAX_READ, fp)) { ++lineno; // remove empty space - ptr in allocated memory char *ptr = line_remove_spaces(buf); if (ptr == NULL) continue; // comments if (*ptr == '#' || *ptr == '\0') { free(ptr); continue; } // process include if (strncmp(ptr, "include ", 8) == 0) { include_level++; // extract profile filename and new skip params char *newprofile = ptr + 8; // profile name char *newskip1 = NULL; // new skip1 char *newskip2 = NULL; // new skip2 char *p = newprofile; while (*p != '\0') { if (*p == ' ') { *p = '\0'; if (newskip1 == NULL) newskip1 = p + 1; else if (newskip2 == NULL) newskip2 = p + 1; } p++; } // expand ${HOME}/ in front of the new profile file char *newprofile2 = expand_home(newprofile, cfg.homedir); // recursivity profile_read((newprofile2)? newprofile2:newprofile, newskip1, newskip2); include_level--; if (newprofile2) free(newprofile2); free(ptr); continue; } // skip if (skip1) { if (strstr(ptr, skip1)) { free(ptr); continue; } } if (skip2) { if (strstr(ptr, skip2)) { free(ptr); continue; } } // verify syntax, exit in case of error if (profile_check_line(ptr, lineno)) profile_add(ptr); } fclose(fp); }
void profile_read(const char *fname) { // exit program if maximum include level was reached if (include_level > MAX_INCLUDE_LEVEL) { fprintf(stderr, "Error: maximum profile include level was reached\n"); exit(1); } if (strlen(fname) == 0) { fprintf(stderr, "Error: invalid profile file\n"); exit(1); } // open profile file: FILE *fp = fopen(fname, "r"); if (fp == NULL) { fprintf(stderr, "Error: cannot open profile file\n"); exit(1); } printf("Reading %s\n", fname); // linked list of lines struct mylist { char *line; struct mylist *next; } m = { NULL, NULL }; struct mylist *mptr = &m; int mylist_cnt = 1; // read the file line by line char buf[MAX_READ + 1]; int lineno = 0; while (fgets(buf, MAX_READ, fp)) { ++lineno; // remove empty space char *ptr = line_remove_spaces(buf); if (ptr == NULL || *ptr == '\0') continue; // comments if (*ptr == '#') continue; // process include if (strncmp(ptr, "include ", 8) == 0) { include_level++; // recursivity profile_read(ptr + 8); include_level--; continue; } // verify syntax, exit in case of error if (profile_check_line(ptr, lineno)) profile_add(ptr); } fclose(fp); }