- tc_core_init();
-
- while (fgets(line, sizeof(line)-1, batch)) {
- if (line[strlen(line)-1]=='\n') {
- line[strlen(line)-1] = '\0';
- } else {
- fprintf(stderr, "No newline at the end of line, looks like to long (%d chars or more)\n", strlen(line));
- exit(-1);
- }
- largc = 0;
- largv[largc]=strtok(line, " ");
- while ((largv[++largc]=strtok(NULL, " ")) != NULL) {
- if (largc > BMAXARG) {
- fprintf(stderr, "Over %d arguments in batch mode, enough!\n", BMAXARG);
- exit(-1);
- }
- }
-
- if (matches(largv[0], "qdisc") == 0) {
- ret += do_qdisc(largc-1, largv+1);
- } else if (matches(largv[0], "class") == 0) {
- ret += do_class(largc-1, largv+1);
- } else if (matches(largv[0], "filter") == 0) {
- ret += do_filter(largc-1, largv+1);
- } else if (matches(largv[0], "help") == 0) {
- usage(); /* note that usage() doesn't return */
- } else {
- fprintf(stderr, "Object \"%s\" is unknown, try \"tc help\".\n", largv[1]);
- exit(-1);
- }
+ cmdlineno = 0;
+ while (getcmdline(&line, &len, stdin) != -1) {
+ char *largv[100];
+ int largc;
+
+ largc = makeargs(line, largv, 100);
+ if (largc == 0)
+ continue; /* blank line */
+
+ if (do_cmd(largc, largv)) {
+ fprintf(stderr, "Command failed %s:%d\n",
+ name, cmdlineno);
+ ret = 1;
+ if (!force)
+ break;