예제 #1
0
파일: sh_cmp.c 프로젝트: jalcim/42sh
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));
}
예제 #2
0
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);
}
예제 #3
0
/* 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);
}