int cmp(t_linez *lz, t_sh *term, t_linez *hist) { if (!ft_strncmp("fg", lz->ep_l, 2) || lz->ep_l[0] == '%') { if ((lz->ep_l[0] == '%' && lz->ep_l[1] == ' ') || (lz->ep_l[0] == 'f' && lz->ep_l[2] == ' ')) second_static(NULL, lz->ep_l, NULL); else if ((lz->ep_l[0] == '%' && lz->ep_l[1] && lz->ep_l[1] != ' ') || (lz->ep_l[0] == 'f' && lz->ep_l[2] && lz->ep_l[2] != ' ')) return (0); job_cont(SIGCONT); return (term->status = 1); } else if (!ft_strncmp("history", lz->ep_l, 7)) { if (lz->ep_l[7] && lz->ep_l[7] != ' ') return (0); return (ft_history(&hist, term, '\0')); } else if (!ft_strncmp("export", lz->ep_l, 6)) { if (lz->ep_l[6] == ' ') return (term->status = export_var(term, lz)); ft_putendl_fd("export: usage: 'export var'", 2); term->status = 0; return (1); } return (cmp1(lz, term, hist)); }
int _builtin_export(char **cmd, t_shenv *shenv) { int i; char *cmd_name; char *name; char *value; i = 1; if (cmd[1] == NULL) return (_builtin_env(cmd, shenv)); cmd_name = strdup("export"); while (cmd[i] != NULL) { name = strtok(strdup(cmd[i]), "="); if ((value = strtok(NULL, "=")) == NULL) export_var(cmd_name, name, shenv); else add_to_env(cmd_name, name, value, shenv); ++i; } xfree(1, &cmd_name); return (EXIT_SUCCESS); }
/* Make hash ! */ int cmd_kmem_hash() { int i, fd, len, new_size; revmlist_t *actual, *second; char buff[BUFSIZ]; char buffhash[BUFSIZ]; eresi_Addr vaddr; unsigned char *hashbuffer; char *tmp; PROFILER_IN(__FILE__, __FUNCTION__, __LINE__); memset(buff, '\0', sizeof(buff)); memset(buffhash, '\0', sizeof(buffhash)); vaddr = -1; actual = world.curjob->curcmd->disasm + 0; second = world.curjob->curcmd->disasm + 1; if (actual->rname) { kernsh_addrlen(actual, &vaddr, &len); hashbuffer = kernsh_hash(vaddr+actual->off, len, &new_size); if (hashbuffer == NULL) { PROFILER_ERR(__FILE__, __FUNCTION__, __LINE__, "Unable to make hash", -1); } i = 0; tmp = buffhash; while(hashbuffer[i] != '\0') { sprintf(tmp, "%02x", hashbuffer[i]); i++; tmp += 2; } snprintf(buff, sizeof(buff), "MD5 @ %s : \n\t%s\n\n", revm_coloraddress(XFMT, (eresi_Addr) vaddr), revm_colorstr((char *)buffhash)); revm_output(buff); snprintf(buff, sizeof(buff), "%s:%s:%s:%s:%s:%s\n\n", revm_coloraddress(XFMT, (eresi_Addr) vaddr), revm_colornumber("%u", libkernshworld.mem), revm_colornumber("%u", (int)config_get_data(LIBKERNSH_CONFIG_HASH)), revm_colornumber("%u", new_size), revm_colornumber("%u", actual->off), revm_colorstr((char *)buffhash)); revm_output(buff); snprintf(buff, sizeof(buff), "0x%lx:%d:%d:%d:%d:%s\n", (unsigned long) vaddr, libkernshworld.mem, (int)config_get_data(LIBKERNSH_CONFIG_HASH), new_size, actual->off, buffhash); revm_setvar_str(REVM_VAR_RESULT, (char *)buffhash); export_var((char *)buffhash, 0, 0, buff, 2); if (second != NULL && second->rname != NULL) { XOPEN(fd, second->rname, O_CREAT|O_APPEND|O_RDWR, 0777, -1); memset(buff, '\0', sizeof(buff)); snprintf(buff, sizeof(buff), "0x%lx:%d:%d:%d:%d:%s\n", (unsigned long) vaddr, libkernshworld.mem, (int)config_get_data(LIBKERNSH_CONFIG_HASH), new_size, actual->off, buffhash); XWRITE(fd, buff, strlen(buff), -1); XCLOSE(fd, -1); } } XFREE(__FILE__, __FUNCTION__, __LINE__, hashbuffer); revm_endline(); PROFILER_ROUT(__FILE__, __FUNCTION__, __LINE__, 0); }