Provided by: libgfarm-dev_2.4.1-1.1ubuntu1_amd64 bug

NAME

       gfs_pio_readline - read one line

SYNOPSIS

       #include <gfarm/gfarm.h>

       char *gfs_pio_readline (GFS_File f, char **bufp, size_t *sizep, size_t *lenp);

DESCRIPTION

       gfs_pio_readline() reads one line from the file specified by the parameter gf.

       Parameter  bufp  specifies  an  address of a pointer variable initialzed by NULL at first.
       gfs_pio_readline() allocates a buffer for I/O dynamically, and stores the address  of  the
       buffer to this variable pointed by bufp.  Parameter sizep specifies an address of a size_t
       variable initialized by 0.  This size_t variable is used to record the size of the buffer.
       Or,  you  can  specify  a  buffer  allocated  by  malloc(3) in the variable pointed by the
       parameter bufp.  In this case, you have to specify the size of the allocated buffer by the
       parameter  sizep.   If  the  length of the line exceeds the size of the buffer, the buffer
       will be automatically realloc(3)ed, and the variable pointed by bufp  and  sizep  will  be
       updated respectively.  Note that you are responsible to free(3) this buffer.

       This  function returns the length of the line to a variable pointed by the parameter lenp.
       This length includes newline character.

       Just like gfs_pio_gets(3), this function doesn't remove newline character at  the  end  of
       lines.  Also,  this function always appends '\0' at the end of strings.  You can deal with
       lines which include '\0' character by using the variable pointed by the parameter lenp.

       If the file reaches its end, the length of the result string becomes 0.

       This function is equivalent to gfs_pio_readdelim(f, bufp, sizep, lenp, "\n", 1).

RETURN VALUES

       NULL   The function terminated successfully.

       GFARM_ERR_NO_MEMORY
              Insufficient memory was available.

              Note that you need to free(3) the buffer pointed by the parameter bufp

       Others An error except the above occurred.  The reason is shown by its pointed strings.

EXAMPLES

   EXAMPLE OF GFS_PIO_READLINE FUNCTION
       #include <stdio.h>
       #include <stdlib.h>
       #include <gfarm/gfarm.h>

       int
       main(int argc, char **argv)
       {
            char *e;
            GFS_File gf;
            size_t bufsize = 0, len;
            char *buffer = NULL;

            e = gfarm_initialize(&argc, &argv);
            if (e != NULL) {
                 fprintf(stderr, "gfarm_initialize: %s\n", e);
                 return (EXIT_FAILURE);
            }
            if (argc <= 1) {
                 fprintf(stderr, "missing gfarm filename\n");
                 return (EXIT_FAILURE);
            }
            e = gfs_pio_open(argv[1], GFARM_FILE_RDONLY, &gf);
            if (e != NULL) {
                 fprintf(stderr, "%s: %s\n", argv[1], e);
                 return (EXIT_FAILURE);
            }
            e = gfs_pio_set_view_global(gf, 0);
            if (e != NULL) {
                 fprintf(stderr, "%s: gfs_pio_set_view_global: %s\n",
                     argv[1], e);
                 return (EXIT_FAILURE);
            }

            while ((e = gfs_pio_readline(gf, &buffer, &bufsize, &len))
                == NULL && len > 0) {
                 printf("<%6d/%6d >%s", len, bufsize, buffer);
            }
            if (buffer != NULL)
                 free(buffer);
            if (e != NULL) {
                 fprintf(stderr, "ERROR: %s\n", e);
                 return (EXIT_FAILURE);
            }
            e = gfs_pio_close(gf);
            if (e != NULL) {
                 fprintf(stderr, "gfs_pio_close: %s\n", e);
                 return (EXIT_FAILURE);
            }
            e = gfarm_terminate();
            if (e != NULL) {
                 fprintf(stderr, "gfarm_initialize: %s\n", e);
                 return (EXIT_FAILURE);
            }
            return (EXIT_SUCCESS);
       }

SEE ALSO

       gfs_pio_open(3), gfs_pio_getline(3), gfs_pio_gets(3), gfs_pio_readdelim(3)