- /* 命令を取得 */
- sepp = p + strcspn(p, " \t\n");
- *sepp = '\0';
- cmdl->cmd = strdup_chk(p, "cmdl.cmd");
- p = sepp + 1;
- while(*p == ' ' || *p == '\t') {
- p++;
- }
- /* オペランドを取得 */
- cmdl->opd = malloc_chk(sizeof(OPD), "cmdl.opd");
- /* 改行かタブまでの文字列を取得。
- 「'」で囲まれた文字列に含まれる場合があるため、空白は無視 */
- if((sepp = p + strcspn(p, "\t\n")) > p) {
- *sepp = '\0';
- cmdl->opd = opdtok(p);
- } else {
- cmdl->opd->opdc = 0;
+ /* 命令取得の実行 */
+ i = strcspn(p, " \t");
+ cmdl->cmd = strndup_chk(p, i, "cmdl.cmd");
+
+ /* オペランドの取得 */
+ /* 文字列の先頭を命令の次の文字に移動 */
+ p += i + 1;
+ /* 文字列先頭の、命令とオペランドの間の空白を削除 */
+ for(i = 0; p[i] == ' ' || p[i] == '\t'; i++) {
+ ;