⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 command.c

📁 mpeg 解复用
💻 C
📖 第 1 页 / 共 3 页
字号:
      case C_FROP:        frop = TRUE;        break;      case C_REPT:        fn = available_token ();        rn = com_number (fn,0,-1);        if (rn >= 0) {          fn = filerefer_name (rn);        }        if (fileagain (fn)) {          fn = lastfile;        }        if (fn != NULL) {          next_token ();          f = input_filereferenced (rn,fn);          if (f != NULL) {            int rept;            rept = com_number (available_token (),0,-1);            if (rept >= 0) {              if (rept != 1) {                if (S_ISREG (f->st_mode)) {                  f->repeatitions = rept-1;                } else {                  warn (LWAR,"Cannot repeat nonregular file",ECOM,1,6,0);                  f->repeatitions = 0;                }              } else {                f->repeatitions = 0;              }              set_lastfile (fn);              next_token ();            } else {              command_toofew ();              r = FALSE;            }          } else {            warn (LWAR,"File not open",ECOM,1,7,0);            r = FALSE;          }        } else {          command_toofew ();          r = FALSE;        }        break;      case C_TIMD:        timed_io = TRUE;        break;      case C_FPSI:        {          int msec;          msec = com_number (available_token (),0,-1);          if (msec >= 0) {            splice_setpsifrequency (msec);            next_token ();          } else {            command_toofew ();            r = FALSE;          }        }        break;      case C_TRGI:        {          int msec;          msec = com_number (available_token (),0,-1);          if (msec >= 0) {            input_settriggertiming (msec);            next_token ();          } else {            command_toofew ();            r = FALSE;          }        }        break;      case C_TRGO:        {          int msec;          msec = com_number (available_token (),0,-1);          if (msec >= 0) {            output_settriggertiming (msec);            next_token ();          } else {            command_toofew ();            r = FALSE;          }        }        break;      case C_TSID:        {          int tsid;          tsid = com_number (available_token (),0x0000L,0xFFFFL);          if (tsid >= 0) {            splice_settransportstreamid (tsid);            next_token ();          } else {            command_toofew ();            r = FALSE;          }        }        break;      case C_TSSI:        fn = available_token ();        rn = com_number (fn,0,-1);        if (rn >= 0) {          fn = filerefer_name (rn);        }        if (fileagain (fn)) {          fn = lastfile;        }        if (fn != NULL) {          next_token ();          f = input_filereferenced (rn,fn);          if (f != NULL) {            if (f->content == ct_transport) {              int lower, upper;              lower = com_number (available_token (),0x0001,TS_PID_HIGHEST);              if (lower >= 0) {                next_token ();                upper = com_number (available_token (),lower,TS_PID_HIGHEST);                if (upper >= 0) {                  splice_addsirange (f,lower,upper);                  next_token ();                } else {                  command_toofew ();                  r = FALSE;                }              } else {                releasechain (tssi_descr,f->u.ts.tssi);                f->u.ts.tssi = NULL;              }            } else {              warn (LWAR,"File must be TS",ECOM,1,8,0);              r = FALSE;            }          } else {            warn (LWAR,"File not open",ECOM,1,9,0);            r = FALSE;          }        } else {          command_toofew ();          r = FALSE;        }        break;      case C_TSSP:        {          int tprg, tpid, ttyp;          tprg = com_number (available_token (),0x0000L,0xFFFFL);          if (tprg >= 0) {            next_token ();            tpid = com_number (available_token (),0x0001,TS_PID_HIGHEST);            if (tpid >= 0) {              next_token ();              ttyp = com_number (available_token (),0x00,0xFF);              if (ttyp >= 0) {                next_token ();                splice_createstump (tprg,tpid,ttyp);              } else {                releasechain (stump_descr,splice_getstumps (tprg,tpid));              }            } else {              releasechain (stump_descr,splice_getstumps (tprg,tpid));            }          } else {            command_toofew ();            r = FALSE;          }        }        break;      case C_DSCR:        {          int tprg, dtag, dlen, dbyt, i;          byte data[MAX_DESCR_LEN];          if (splice_multipleprograms) {            tprg = com_number (available_token (),0x0000L,0xFFFFL);            next_token ();          } else {            tprg = 0;          }          if (tprg >= 0) {            dtag = com_number (available_token (),0,NUMBER_DESCR-1);            if (dtag >= 0) {              next_token ();              dlen = com_number (available_token (),0,MAX_DESCR_LEN);              if (dlen >= 0) {                i = 0;                next_token ();                while ((i < dlen)                    && ((dbyt = com_number (available_token (),0x00,0xFF))                            >= 0)) {                  data[i++] = dbyt;                  next_token ();                }                if (i == dlen) { /* <tprg> <dtag> <dlen> ... add/inhibit one */                  splice_modifytargetdescriptor (tprg,-1,-1,dtag,dlen,&data[0]);                } else {                  command_toofew ();                  r = FALSE;                }              } else { /* <tprg> <dtag>  del one */                splice_modifytargetdescriptor (tprg,-1,-1,dtag,-1,NULL);              }            } else { /* <tprg>  del all non-stream-specific */              splice_modifytargetdescriptor (tprg,-1,-1,-1,-1,NULL);            }          } else {            command_toofew ();            r = FALSE;          }        }        break;      case C_DSCS:        {          int tprg, tsid, dtag, dlen, dbyt, i;          byte data[MAX_DESCR_LEN];          if (splice_multipleprograms) {            tprg = com_number (available_token (),0x0000L,0xFFFFL);            if (tprg >= 0) {              next_token ();            }          } else {            tprg = 0;          }          if (tprg >= 0) {            tsid = com_number (available_token (),0x00,0xFF);            if (tsid >= 0) {              next_token ();              dtag = com_number (available_token (),0,NUMBER_DESCR-1);              if (dtag >= 0) {                next_token ();                dlen = com_number (available_token (),0,MAX_DESCR_LEN);                if (dlen >= 0) {                  i = 0;                  next_token ();                  while ((i < dlen)                      && ((dbyt = com_number (available_token (),0x00,0xFF))                              >= 0)) {                    data[i++] = dbyt;                    next_token ();                  }                  if (i == dlen) { /* <tprg> <tsid> <dtag> <dlen> ... add/inh */                    splice_modifytargetdescriptor (tprg,tsid,-1,dtag,dlen,                        &data[0]);                  } else {                    command_toofew ();                    r = FALSE;                  }                } else { /* <tprg> <tsid> <dtag>  del one */                  splice_modifytargetdescriptor (tprg,tsid,-1,dtag,-1,NULL);                }              } else { /* <tprg> <tsid>  del all for tsid */                splice_modifytargetdescriptor (tprg,tsid,-1,-1,-1,NULL);              }            } else { /* <tprg>  del all */              splice_modifytargetdescriptor (tprg,-1,0,-1,-1,NULL);            }          } else {            splice_modifytargetdescriptor (tprg,-1,0,-1,-1,NULL);          }        }        break;      case C_DSCP:        {          int tprg, tpid, dtag, dlen, dbyt, i;          byte data[MAX_DESCR_LEN];          tprg = com_number (available_token (),0x0000L,0xFFFFL);          if (tprg >= 0) {            next_token ();            tpid = com_number (available_token (),0x0001,TS_PID_HIGHEST);            if (tpid >= 0) {              next_token ();              dtag = com_number (available_token (),0,NUMBER_DESCR-1);              if (dtag >= 0) {                next_token ();                dlen = com_number (available_token (),0,MAX_DESCR_LEN);                if (dlen >= 0) {                  i = 0;                  next_token ();                  while ((i < dlen)                      && ((dbyt = com_number (available_token (),0x00,0xFF))                              >= 0)) {                    data[i++] = dbyt;                    next_token ();                  }                  if (i == dlen) { /* <tprg> <tpid> <dtag> <dlen> ... add/inh */                    splice_modifytargetdescriptor (tprg,-1,tpid,dtag,dlen,                        &data[0]);                  } else {                    command_toofew ();                    r = FALSE;                  }                } else { /* <tprg> <tpid> <dtag>  del one */                  splice_modifytargetdescriptor (tprg,-1,tpid,dtag,-1,NULL);                }              } else { /* <tprg> <tpid>  del all for tpid */                splice_modifytargetdescriptor (tprg,-1,tpid,-1,-1,NULL);              }            } else { /* <tprg>  del all */              splice_modifytargetdescriptor (tprg,-1,0,-1,-1,NULL);            }          } else {            splice_modifytargetdescriptor (tprg,-1,0,-1,-1,NULL);          }        }        break;      case C_CONF:        {          int conf;          conf = com_number (available_token (),0,2);          if (conf >= 0) {            splice_set_configuration (conf);            next_token ();          } else {            command_toofew ();            r = FALSE;          }        }        break;      case C_STAT:        {          int msec;          msec = com_number (available_token (),0,-1);          if (msec >= 0) {            output_set_statistics (msec);            next_token ();          } else {            command_toofew ();            r = FALSE;          }        }        break;      case C_BSCR:        accept_weird_scr = TRUE;        break;      case C_CPID:        {          int cpid;          cpid = com_number (available_token (),0,1);          conservative_pid_assignment = (cpid != 0);          if (cpid >= 0) {            next_token ();          }        }        break;      default:        fprintf (stderr, "Unknown command: %s\n", t);        if (first) {          command_help ();        } else {          warn (LWAR,"Bad token",ECOM,1,1,*t);        }        r = FALSE;        break;    }    t = available_token ();  }  return (r);}boolean command_init (int cargc,    char **cargv){  verbose_level = LERR;  argi = 1;  argc = cargc;  argv = cargv;  combln = 0;  lastfile = NULL;  first = TRUE;  if (!command ()) {    return (FALSE);  }  first = FALSE;  cmdf = STDIN_FILENO;  return (cmdf >= 0);}/* Determine whether command input can be processed. * Set the poll-struct accordingly. * Return: TRUE, if command input is expected, FALSE otherwise. */boolean command_expected (unsigned int *nfds,    struct pollfd *ufds){  if (cmdf >= 0) {    ufds->fd = cmdf;    ufds->events = POLLIN;    *nfds += 1;  }  return (cmdf >= 0);}/* Read command input and process it. */void command_process (boolean readable){  int i;  if (combln >= MAX_DATA_COMB-HIGHWATER_COM) {    warn (LWAR,"Too long",ECOM,2,1,combln);    moveleft (HIGHWATER_COM);  }  if (readable) {    i = read (cmdf,&combuf[combln],MAX_DATA_COMB-combln);  } else {    i = 0;  }  if (i > 0) {    combln += i;    while (line_complete ()) {      command ();      moveleft (comlln+1);    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -