Ejemplo n.º 1
0
char		*get_job_cmd(int pid)
{
  char		*path;
  char		*job_pid;
  int		fd;

  if ((job_pid = my_nbr_to_str(pid)) == NULL)
    return (NULL);
  path = my_str_catdup("/proc/", job_pid);
  if (path == NULL)
    return (NULL);
  free(job_pid);
  job_pid = my_str_catdup(path, "/cmdline");
  free(path);
  if ((path = job_pid) == NULL)
    return (NULL);
  if ((fd = open(path, O_RDONLY)) < 0)
    return (NULL);
  free(path);
  if ((path = fget_next_line(fd)) == NULL)
    return (NULL);
  while ((job_pid = fget_next_line(fd)) != NULL)
    free(job_pid);
  if (close(fd) < 0)
    return (NULL);
  return (path);
}
Ejemplo n.º 2
0
static int	add_label(t_data *data, int addr, char *buff, int value)
{
  int   nb;

  nb = 0;
  while (data->label && data->label[nb].name[0])
    nb++;
  if ((data->label = realloc(data->label, (nb + 2) * sizeof(t_label))) == NULL)
    return (err(0));
  data->label[nb + 1].name[0] = '\0';
  data->label[nb].address = addr;
  my_strcpy(data->label[nb].name, "lbl_");
  my_nbr_to_str(nb + 1, data->label[nb].name + 4, BUFF_SIZE - 4);
  my_strcpy(buff, data->label[nb].name);
  data->label[nb].line = -1;
  data->label[nb].ex_line = data->line;
  data->label[nb].ex_word = 0;
  while (data->code[data->line] &&
	 data->code[data->line][data->label[nb].ex_word])
    data->label[nb].ex_word++;
  data->label[nb].ex_value = value;
  return (0);
}