X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=src%2Fvsched.c;h=e3a6db55d1629c145591c249df7b43f2a71054a1;hb=ec4370f7ebd7fb0ce7f002f5bf2c74f03acd3ec1;hp=40fe83d2a4e6d74c52b687ff3d8ac05b997d0be8;hpb=3b34449070c0846fdc49436d1edd5916512f1644;p=util-vserver.git diff --git a/src/vsched.c b/src/vsched.c index 40fe83d..e3a6db5 100644 --- a/src/vsched.c +++ b/src/vsched.c @@ -1,4 +1,4 @@ -// $Id: vsched.c 2408 2006-11-27 14:06:57Z dhozac $ --*- c -*-- +// $Id: vsched.c 2510 2007-03-07 20:33:56Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // Copyright (C) 2006 Daniel Hokka Zakrisson @@ -158,12 +158,7 @@ showVersion() static void do_dir_entry(struct vc_set_sched *sched, const char *name) { - int fd; - char buf[128]; - signed long val; struct sched_opt *opt; - ssize_t len; - char *newline; for (opt = FILE_OPTIONS; opt->name != 0; opt++) { if (strcmp(name, opt->name) == 0) @@ -172,22 +167,28 @@ static void do_dir_entry(struct vc_set_sched *sched, const char *name) if (opt->name == 0) return; - fd = Eopen(name, O_RDONLY, 0); - len = Eread(fd, buf, sizeof(buf)-1); - Eclose(fd); - buf[len] = '\0'; - if ((newline=strchr(buf, '\n')) != NULL) - *newline = '\0'; - - if (!isNumber(buf, &val, true)) { - WRITE_MSG(2, ENSC_WRAPPERS_PREFIX); - WRITE_STR(2, name); - WRITE_MSG(2, ": is not a number\n"); - exit(1); - } + if (opt->offset != offsetof(struct vc_set_sched, set_mask)) { + int fd; + char buf[128], *newline; + signed long val; + ssize_t len; + + fd = Eopen(name, O_RDONLY, 0); + len = Eread(fd, buf, sizeof(buf)-1); + Eclose(fd); + buf[len] = '\0'; + if ((newline=strchr(buf, '\n')) != NULL) + *newline = '\0'; + + if (!isNumber(buf, &val, true)) { + WRITE_MSG(2, ENSC_WRAPPERS_PREFIX); + WRITE_STR(2, name); + WRITE_MSG(2, ": is not a number\n"); + exit(1); + } - if (opt->offset != offsetof(struct vc_set_sched, set_mask)) *(int_least32_t *)(((char *)sched)+opt->offset) = (int_least32_t) val; + } sched->set_mask |= opt->mask; }