Exemplo n.º 1
0
char		*my_get_next_line(int fd)
{
  static char	*buffer;
  char		*line;
  int		i;

  if ((buffer == NULL && (buffer = my_read_dup(fd, SREAD)) == NULL)
      || (i = my_check_line(BLANK, buffer)) < 0 || fd < 0)
    return (NULL);
  while (i != 1)
    {
      if ((line = my_strdup(buffer)) == NULL
	  || (i == 0 && (buffer = my_readline(fd, buffer, SREAD)) == NULL)
	  || (i = my_check_line(line, buffer)) < 0)
	return (NULL);
      if (i == 0 && my_strcmp(buffer, line) == 0)
	{
	  free(buffer);
	  return (NULL);
	}
      free(line);
    }
  if ((line = my_get_line(buffer)) == NULL
      || (buffer = my_cut_line(buffer)) == NULL
      || (i = my_strlen(buffer)) < 0)
    return (NULL);
  return (line);
}
Exemplo n.º 2
0
t_ins		*my_read_file(header_t *header, char *file)
{
  t_ins		*ins;
  char		*str;
  int		fd;
  int		i;

  ins = NULL;
  i = 1;
  if (header == NULL || (fd = my_open_rdonly(file)) == -1)
    return (NULL);
  while ((str = my_get_next_line(fd)) != NULL)
    {
      if (my_check_line(header, &str) == 0)
	if ((ins = my_parse_line(ins, str, i)) == NULL)
	  return (my_put_error_line_null(i, str, "error on this line\n"));
      i++;
      free(str);
    }
  if (ins != NULL)
    while (ins->prev != NULL)
      ins = ins->prev;
  else
    return (my_put_error_null("no instruction\n"));
  return (ins);
}