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)

Gfarm                                              13 May 2004                               GFS_PIO_READLINE(3)