void check_keyword() { char *argv[MAX_ARGC + 1] = {NULL}; char cmdstr[CMDBUF_SIZE]; int argc = 1; int i; find_events(); fill_arg(cmdstr, cmd[cur_his]); argv[0] = cmdtok(cmdstr); if (!argv[0]) return; for(argc = 1 ; argv[argc-1] && argc < MAX_ARGC ; argc++) if(!(argv[argc] = cmdtok(NULL))) break; for (i = 0; i < CMD_COUNT; i++) { if (!strcmp(argv[0], cmd_data[i].cmd)) { cmd_data[i].func(argc, argv); break; } } if (i == CMD_COUNT) { write(fdout, argv[0], strlen(argv[0]) + 1); write(fdout, ": command not found", 20); write(fdout, next_line, 3); } }
int op_add(t_action *action, char *str, t_pos *pos) { int i; char c; char type; char **tab; char **list_arg; if ((c = 0) || !(pos->prog_size += 2) || !(i = -1) || !(action->identifier = 0x04) || !(action->args = malloc(sizeof(t_arg *) * 4)) || !(tab = str_to_word_tab(str, ',')) || !(list_arg = str_to_word_tab("1 1 1", ' ')) || init_args(action, 3)) return (1); while (tab[++i]) { if (i > 2 || (type = check_type(tab[i], pos)) == -1 || check_args(type, list_arg[i], pos) || fill_arg(type, tab[i], action->args[i], action->pos - i - 1)) return (1); add_prog_size(type, pos); c += (type << (6 - (i * 2))); } action->coding_byte = c; return (free_tab(tab), free_tab(list_arg), (i < 3) ? 1 : 0); }
static void treat_asm(t_cmd *line, char *header[2], t_cmd *asms[3], int *pos) { int i; if (line->cmd_code == T_LABEL) { list_replace_node(asms, &asms[2], line); line->bin_size = *pos; } else if (line->cmd_code == T_NAME || line->cmd_code == T_COMMENT) header[line->cmd_code + 3] = line->arg.argv[0]; else { line->bin_size = -1; line->bin[++(line->bin_size)] = line->cmd_code; if (line->cmd_code != T_REG && line->cmd_code != 9 && line->cmd_code != 12 && line->cmd_code != 15) fill_arg_type(line, &(line->bin_size)); i = -1; while (++i < MAX_ARGS_NUMBER && line->arg.type[i] != 0) fill_arg(line, &(line->bin_size), my_getnbr(line->arg.argv[i]), get_arg_size(line->cmd_code, i, line->arg.type[i])); *pos += line->bin_size + 1; } }
void check_keyword() { char *argv[MAX_ARGC + 1] = {NULL}; char cmdstr[CMDBUF_SIZE]; char buffer[CMDBUF_SIZE * MAX_ENVVALUE / 2 + 1]; char *p = buffer; int argc = 1; int i; find_events(); strcpy(cmdstr, cmd[cur_his]); argv[0] = cmdtok(cmdstr); if (!argv[0]) return; while (1) { argv[argc] = cmdtok(NULL); if (!argv[argc]) break; argc++; if (argc >= MAX_ARGC) break; } for(i = 0; i < argc; i++) { int l = fill_arg(p, argv[i]); argv[i] = p; p += l + 1; } for (i = 0; i < CMD_COUNT; i++) { if (!strcmp(argv[0], cmd_data[i].cmd)) { cmd_data[i].func(argc, argv); break; } } if (i == CMD_COUNT) { write(fdout, argv[0], strlen(argv[0]) + 1); write(fdout, ": command not found", 20); write(fdout, next_line, 3); } }
static void labels_loop(t_cmd *line, t_cmd *lbls, int i[3], int *lsize) { t_cmd *it; while (++i[0] < 4 && line->arg.type[*i] != 0) { i[1] = get_arg_size(line->cmd_code, *i, line->arg.type[*i]); if (line->arg.type[*i] == T_LAB || line->arg.argv[*i][0] == LABEL_CHAR) { it = lbls; while (it && my_strcmp(line->arg.argv[*i] + 1, it->arg.argv[0])) it = it->next; if (it) fill_arg(line, lsize, it->bin_size - i[2], i[1]); else syntax_prompt("Label undifined", line->line, *i, TRUE); } else *lsize += i[1]; } }
void generic_sanitise(struct syscallrecord *rec) { struct syscallentry *entry; unsigned int call; call = rec->nr; entry = syscalls[call].entry; if (entry->arg1type != 0) rec->a1 = fill_arg(rec, 1); if (entry->arg2type != 0) rec->a2 = fill_arg(rec, 2); if (entry->arg3type != 0) rec->a3 = fill_arg(rec, 3); if (entry->arg4type != 0) rec->a4 = fill_arg(rec, 4); if (entry->arg5type != 0) rec->a5 = fill_arg(rec, 5); if (entry->arg6type != 0) rec->a6 = fill_arg(rec, 6); }