Man Linux: Main Page and Category List

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)