git-p4: Teach gitConfig method about arguments.
[gitweb.git] / vcs-svn / line_buffer.c
index 661b007092247add3d7d5121345a999b8af53f7b..aedf105b70586f2ef7567547426bb6622799b067 100644 (file)
@@ -17,6 +17,22 @@ int buffer_init(struct line_buffer *buf, const char *filename)
        return 0;
 }
 
+int buffer_fdinit(struct line_buffer *buf, int fd)
+{
+       buf->infile = fdopen(fd, "r");
+       if (!buf->infile)
+               return -1;
+       return 0;
+}
+
+int buffer_tmpfile_init(struct line_buffer *buf)
+{
+       buf->infile = tmpfile();
+       if (!buf->infile)
+               return -1;
+       return 0;
+}
+
 int buffer_deinit(struct line_buffer *buf)
 {
        int err;
@@ -27,6 +43,27 @@ int buffer_deinit(struct line_buffer *buf)
        return err;
 }
 
+FILE *buffer_tmpfile_rewind(struct line_buffer *buf)
+{
+       rewind(buf->infile);
+       return buf->infile;
+}
+
+long buffer_tmpfile_prepare_to_read(struct line_buffer *buf)
+{
+       long pos = ftell(buf->infile);
+       if (pos < 0)
+               return error("ftell error: %s", strerror(errno));
+       if (fseek(buf->infile, 0, SEEK_SET))
+               return error("seek error: %s", strerror(errno));
+       return pos;
+}
+
+int buffer_read_char(struct line_buffer *buf)
+{
+       return fgetc(buf->infile);
+}
+
 /* Read a line without trailing newline. */
 char *buffer_read_line(struct line_buffer *buf)
 {