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); }
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); }