Advertisement
Guest User

Untitled

a guest
Sep 16th, 2014
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <unistd.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <fcntl.h>
  5.  
  6. #define BUFFER_SIZE 65536
  7.  
  8. char    *ft_read(int filedes)
  9. {
  10.     char    *str;
  11.     char    buffer[BUFFER_SIZE];
  12.     int     input_size;
  13.     int     str_size;
  14.     int     done;
  15.  
  16.     done = 0;
  17.     str = (char *)malloc(sizeof(char));
  18.     if (!str)
  19.         return (NULL);
  20.     *str = '\0';
  21.     str_size = 0;
  22.     while (!done && (input_size = read(filedes, buffer, sizeof(buffer) - 1)) > 0)
  23.     {
  24.         // if stdin stop at newline
  25.         if (filedes == 0 && buffer[input_size-1] == '\n')
  26.             done = 1;
  27.         buffer[input_size] = '\0';
  28.         str = realloc(str, str_size + input_size + 1);
  29.         if (!str)
  30.             return (NULL);
  31.         str = strncat(str, buffer, input_size);
  32.         str_size += input_size;
  33.     }
  34.     if (input_size < 0)
  35.     {
  36.         free(str);
  37.         return (NULL);
  38.     }
  39.     return (str);
  40. }
  41.  
  42. // return number of character in current line starting from cursor
  43. int     ft_linelen(char *cursor)
  44. {
  45.     char    *i;
  46. /*circlejerk carrousell*/
  47.     i = cursor;
  48.     while (*i && *i != '\n')
  49.         i++;
  50.     return ((int)(i - cursor));
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement