static void test_inplace_toupper(void) { char abc[] = "abc"; char def[] = "def"; ToUpperStrInplace(abc); ToUpperStrInplace(def); assert_string_equal(abc, "ABC"); assert_string_equal(def, "DEF"); }
static void test_alphabet_toupper(void) { char lo_alphabet_uppercased[CF_MAXVARSIZE]; strncpy(lo_alphabet_uppercased, lo_alphabet, CF_MAXVARSIZE); ToUpperStrInplace(lo_alphabet_uppercased); assert_string_equal(lo_alphabet_uppercased, hi_alphabet); }
static void test_weird_chars_toupper(void) { static const char *weirdstuff = "1345\0xff%$#@!"; char weirdstuff_copy_uppercased[CF_MAXVARSIZE]; strncpy(weirdstuff_copy_uppercased, weirdstuff, CF_MAXVARSIZE); ToUpperStrInplace(weirdstuff_copy_uppercased); assert_string_equal(weirdstuff_copy_uppercased, weirdstuff); }
static void WriteHeader(Writer *out, const char *program, time_t last_modified) { char program_upper[256] = { 0 }; snprintf(program_upper, 255, "%s", program); ToUpperStrInplace(program_upper); char date_modified[20] = { 0 }; { struct tm t; gmtime_r(&last_modified, &t); strftime(date_modified, 19, "%Y-%m-%d", &t); } WriterWriteF(out, ".TH %s 8 \"%s\" \"CFEngine\" \"System Administration\"\n", program_upper, date_modified); }
int VerifyInFstab(char *name, Attributes a, Promise *pp) /* Ensure filesystem IS in fstab, and return no of changes */ { char fstab[CF_BUFSIZE]; char *host, *rmountpt, *mountpt, *fstype, *opts; if (!FSTABLIST) { if (!LoadFileAsItemList(&FSTABLIST, VFSTAB[VSYSTEMHARDCLASS], a, pp)) { CfOut(cf_error, "", "Couldn't open %s!\n", VFSTAB[VSYSTEMHARDCLASS]); return false; } else { FSTAB_EDITS = 0; } } if (a.mount.mount_options) { opts = Rlist2String(a.mount.mount_options, ","); } else { opts = xstrdup(VMOUNTOPTS[VSYSTEMHARDCLASS]); } host = a.mount.mount_server; rmountpt = a.mount.mount_source; mountpt = name; fstype = a.mount.mount_type; #if defined(__QNX__) || defined(__QNXNTO__) snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s %s\t%s 0 0", host, rmountpt, mountpt, fstype, opts); #elif defined(_CRAY) char fstype_upper[CF_BUFSIZE]; strlcpy(fstype_upper, fstype, CF_BUFSIZE); ToUpperStrInplace(fstype_upper); snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s %s\t%s", host, rmountpt, mountpt, fstype_upper, opts); break; #elif defined(__hpux) snprintf(fstab, CF_BUFSIZE, "%s:%s %s \t %s \t %s 0 0", host, rmountpt, mountpt, fstype, opts); #elif defined(_AIX) snprintf(fstab, CF_BUFSIZE, "%s:\n\tdev\t= %s\n\ttype\t= %s\n\tvfs\t= %s\n\tnodename\t= %s\n\tmount\t= true\n\toptions\t= %s\n\taccount\t= false\n", mountpt, rmountpt, fstype, fstype, host, opts); #elif defined(__linux__) snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s \t %s \t %s", host, rmountpt, mountpt, fstype, opts); #elif defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s \t %s \t %s 0 0", host, rmountpt, mountpt, fstype, opts); #elif defined(__sun) || defined(sco) || defined(__SCO_DS) snprintf(fstab, CF_BUFSIZE, "%s:%s - %s %s - yes %s", host, rmountpt, mountpt, fstype, opts); #elif defined(__CYGWIN__) snprintf(fstab, CF_BUFSIZE, "/bin/mount %s:%s %s", host, rmountpt, mountpt); #endif CfOut(cf_verbose, "", "Verifying %s in %s\n", mountpt, VFSTAB[VSYSTEMHARDCLASS]); if (!MatchFSInFstab(mountpt)) { AppendItem(&FSTABLIST, fstab, NULL); FSTAB_EDITS++; cfPS(cf_inform, CF_CHG, "", pp, a, "Adding file system %s:%s seems to %s.\n", host, rmountpt, VFSTAB[VSYSTEMHARDCLASS]); } free(opts); return 0; }
static void test_empty_toupper(void) { char str[] = ""; ToUpperStrInplace(str); assert_string_equal(str, ""); }
static void test_mix_case_toupper(void) { char str[] = "aBcD"; ToUpperStrInplace(str); assert_string_equal(str, "ABCD"); }
int VerifyInFstab(char *name, Attributes a, Promise *pp) /* Ensure filesystem IS in fstab, and return no of changes */ { char fstab[CF_BUFSIZE]; char *host, *rmountpt, *mountpt, *fstype, *opts; if (!FSTABLIST) { if (!LoadFileAsItemList(&FSTABLIST, VFSTAB[VSYSTEMHARDCLASS], a, pp)) { CfOut(cf_error, "", "Couldn't open %s!\n", VFSTAB[VSYSTEMHARDCLASS]); return false; } else { FSTAB_EDITS = 0; } } if (a.mount.mount_options) { opts = Rlist2String(a.mount.mount_options, ","); } else { opts = xstrdup(VMOUNTOPTS[VSYSTEMHARDCLASS]); } host = a.mount.mount_server; rmountpt = a.mount.mount_source; mountpt = name; fstype = a.mount.mount_type; switch (VSYSTEMHARDCLASS) { case qnx: snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s %s\t%s 0 0", host, rmountpt, mountpt, fstype, opts); break; case crayos: { char fstype_upper[CF_BUFSIZE]; strlcpy(fstype_upper, fstype, CF_BUFSIZE); ToUpperStrInplace(fstype_upper); snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s %s\t%s", host, rmountpt, mountpt, fstype_upper, opts); break; } case hp: snprintf(fstab, CF_BUFSIZE, "%s:%s %s \t %s \t %s 0 0", host, rmountpt, mountpt, fstype, opts); break; case aix: snprintf(fstab, CF_BUFSIZE, "%s:\n\tdev\t= %s\n\ttype\t= %s\n\tvfs\t= %s\n\tnodename\t= %s\n\tmount\t= true\n\toptions\t= %s\n\taccount\t= false\n", mountpt, rmountpt, fstype, fstype, host, opts); break; case linuxx: snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s \t %s \t %s", host, rmountpt, mountpt, fstype, opts); break; case netbsd: case openbsd: case dragonfly: case freebsd: snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s \t %s \t %s 0 0", host, rmountpt, mountpt, fstype, opts); break; case unix_sv: case solaris: snprintf(fstab, CF_BUFSIZE, "%s:%s - %s %s - yes %s", host, rmountpt, mountpt, fstype, opts); break; case cfnt: snprintf(fstab, CF_BUFSIZE, "/bin/mount %s:%s %s", host, rmountpt, mountpt); break; case cfsco: CfOut(cf_error, "", "Don't understand filesystem format on SCO, no data - please fix me"); break; default: free(opts); return false; } CfOut(cf_verbose, "", "Verifying %s in %s\n", mountpt, VFSTAB[VSYSTEMHARDCLASS]); if (!MatchFSInFstab(mountpt)) { AppendItem(&FSTABLIST, fstab, NULL); FSTAB_EDITS++; cfPS(cf_inform, CF_CHG, "", pp, a, "Adding file system %s:%s seems to %s.\n", host, rmountpt, VFSTAB[VSYSTEMHARDCLASS]); } free(opts); return 0; }
int VerifyInFstab(EvalContext *ctx, char *name, const Attributes *a, const Promise *pp, PromiseResult *result) /* Ensure filesystem IS in fstab, and return no of changes */ { assert(a != NULL); char fstab[CF_BUFSIZE]; char *host, *rmountpt, *mountpt, *fstype, *opts; if (!FSTABLIST) { if (!LoadFileAsItemList(&FSTABLIST, VFSTAB[VSYSTEMHARDCLASS], a->edits)) { Log(LOG_LEVEL_ERR, "Couldn't open '%s'", VFSTAB[VSYSTEMHARDCLASS]); return false; } else { FSTAB_EDITS = 0; } } if (a->mount.mount_options) { opts = Rlist2String(a->mount.mount_options, ","); } else { opts = xstrdup(VMOUNTOPTS[VSYSTEMHARDCLASS]); } host = a->mount.mount_server; rmountpt = a->mount.mount_source; mountpt = name; fstype = a->mount.mount_type; #if defined(__QNX__) || defined(__QNXNTO__) snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s %s\t%s 0 0", host, rmountpt, mountpt, fstype, opts); #elif defined(_CRAY) char fstype_upper[CF_BUFSIZE]; strlcpy(fstype_upper, fstype, CF_BUFSIZE); ToUpperStrInplace(fstype_upper); snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s %s\t%s", host, rmountpt, mountpt, fstype_upper, opts); break; #elif defined(__hpux) snprintf(fstab, CF_BUFSIZE, "%s:%s %s \t %s \t %s 0 0", host, rmountpt, mountpt, fstype, opts); #elif defined(_AIX) snprintf(fstab, CF_BUFSIZE, "%s:\n\tdev\t= %s\n\ttype\t= %s\n\tvfs\t= %s\n\tnodename\t= %s\n\tmount\t= true\n\toptions\t= %s\n\taccount\t= false\n", mountpt, rmountpt, fstype, fstype, host, opts); #elif defined(__linux__) snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s \t %s \t %s", host, rmountpt, mountpt, fstype, opts); #elif defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) snprintf(fstab, CF_BUFSIZE, "%s:%s \t %s \t %s \t %s 0 0", host, rmountpt, mountpt, fstype, opts); #elif defined(__sun) || defined(sco) || defined(__SCO_DS) snprintf(fstab, CF_BUFSIZE, "%s:%s - %s %s - yes %s", host, rmountpt, mountpt, fstype, opts); #elif defined(__CYGWIN__) snprintf(fstab, CF_BUFSIZE, "/bin/mount %s:%s %s", host, rmountpt, mountpt); #endif Log(LOG_LEVEL_VERBOSE, "Verifying '%s' in '%s'", mountpt, VFSTAB[VSYSTEMHARDCLASS]); if (!MatchFSInFstab(mountpt)) { AppendItem(&FSTABLIST, fstab, NULL); FSTAB_EDITS++; cfPS(ctx, LOG_LEVEL_INFO, PROMISE_RESULT_CHANGE, pp, a, "Adding file system '%s:%s' to '%s'", host, rmountpt, VFSTAB[VSYSTEMHARDCLASS]); *result = PromiseResultUpdate(*result, PROMISE_RESULT_CHANGE); } free(opts); return 0; }