Rusty Russell 17 years ago
parent
commit
16b7eb13fb
6 changed files with 62 additions and 72 deletions
  1. 52 0
      ccan/string/string.c
  2. 4 0
      ccan/string/string.h
  3. 0 34
      tools/_infotojson/infotojson.c
  4. 0 29
      tools/doc_extract.c
  5. 6 6
      tools/grab_file.c
  6. 0 3
      tools/tools.h

+ 52 - 0
ccan/string/string.c

@@ -6,6 +6,10 @@
 #include <stdlib.h>
 #include "string.h"
 #include "talloc/talloc.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
 
 char **strsplit(const void *ctx, const char *string, const char *delims,
 		 unsigned int *nump)
@@ -42,3 +46,51 @@ char *strjoin(const void *ctx, char *strings[], const char *delim)
 	}
 	return ret;
 }
+
+static int close_no_errno(int fd)
+{
+	int ret = 0, serrno = errno;
+	if (close(fd) < 0)
+		ret = errno;
+	errno = serrno;
+	return ret;
+}
+
+void *grab_fd(const void *ctx, int fd)
+{
+	int ret;
+	unsigned int max = 16384, size = 0;
+	char *buffer;
+
+	buffer = talloc_array(ctx, char, max+1);
+	while ((ret = read(fd, buffer + size, max - size)) > 0) {
+		size += ret;
+		if (size == max)
+			buffer = talloc_realloc(ctx, buffer, char, max*=2 + 1);
+	}
+	if (ret < 0) {
+		talloc_free(buffer);
+		buffer = NULL;
+	} else
+		buffer[size] = '\0';
+
+	return buffer;
+}
+
+void *grab_file(const void *ctx, const char *filename)
+{
+	int fd;
+	char *buffer;
+
+	if (streq(filename, "-"))
+		fd = dup(STDIN_FILENO);
+	else
+		fd = open(filename, O_RDONLY, 0);
+
+	if (fd < 0)
+		return NULL;
+
+	buffer = grab_fd(ctx, fd);
+	close_no_errno(fd);
+	return buffer;
+}

+ 4 - 0
ccan/string/string.h

@@ -102,4 +102,8 @@ char **strsplit(const void *ctx, const char *string, const char *delims,
  *	}
  */
 char *strjoin(const void *ctx, char *strings[], const char *delim);
+
+void *grab_fd(const void *ctx, int fd);
+
+void *grab_file(const void *ctx, const char *filename);
 #endif /* CCAN_STRING_H */

+ 0 - 34
tools/_infotojson/infotojson.c

@@ -1,36 +1,6 @@
 /* This extract info from _info.c and create json file and also optionally store to db */
 #include "infotojson.h"
 
-/* This version adds one byte (for nul term) */
-static void *grab_file(void *ctx, const char *filename)
-{
-	unsigned int max = 16384, size = 0;
-	int ret, fd;
-	char *buffer;
-
-	if (streq(filename, "-"))
-		fd = dup(STDIN_FILENO);
-	else
-		fd = open(filename, O_RDONLY, 0);
-
-	if (fd < 0)
-		return NULL;
-
-	buffer = talloc_array(ctx, char, max+1);
-	while ((ret = read(fd, buffer + size, max - size)) > 0) {
-		size += ret;
-		if (size == max)
-			buffer = talloc_realloc(ctx, buffer, char, max*=2 + 1);
-	}
-	if (ret < 0) {
-		talloc_free(buffer);
-		buffer = NULL;
-	} else
-		buffer[size] = '\0';
-	close(fd);
-	return buffer;
-}
-
 /*creating json structure for storing to file/db*/
 static struct json *createjson(char **infofile, char *author)
 {
@@ -56,10 +26,6 @@ static struct json *createjson(char **infofile, char *author)
 	 if (!jsonobj->module)
 		errx(1, "talloc error");
 		
-	//jsonobj->module = (char *)palloc(sizeof(char) * (modulename - 1));
-	//strncpy(jsonobj->module, infofile[0], modulename - 1);
-	//jsonobj->module[modulename - 1] = '\0';
-
 	jsonobj->title = infofile[0];
 	jsonobj->desc = &infofile[1];
 	

+ 0 - 29
tools/doc_extract.c

@@ -11,35 +11,6 @@
 #include "talloc/talloc.h"
 #include "string/string.h"
 
-/* This version adds one byte (for nul term) */
-static void *grab_file(void *ctx, const char *filename)
-{
-	unsigned int max = 16384, size = 0;
-	int ret, fd;
-	char *buffer;
-
-	if (streq(filename, "-"))
-		fd = dup(STDIN_FILENO);
-	else
-		fd = open(filename, O_RDONLY, 0);
-
-	if (fd < 0)
-		return NULL;
-
-	buffer = talloc_array(ctx, char, max+1);
-	while ((ret = read(fd, buffer + size, max - size)) > 0) {
-		size += ret;
-		if (size == max)
-			buffer = talloc_realloc(ctx, buffer, char, max*=2 + 1);
-	}
-	if (ret < 0) {
-		talloc_free(buffer);
-		buffer = NULL;
-	} else
-		buffer[size] = '\0';
-	close(fd);
-	return buffer;
-}
 
 int main(int argc, char *argv[])
 {

+ 6 - 6
tools/grab_file.c

@@ -7,16 +7,16 @@
 #include <unistd.h>
 #include <errno.h>
 
-static int close_no_errno(int fd)
+/*static int close_no_errno(int fd)
 {
 	int ret = 0, serrno = errno;
 	if (close(fd) < 0)
 		ret = errno;
 	errno = serrno;
 	return ret;
-}
+}*/
 
-void *grab_fd(const void *ctx, int fd)
+/*void *grab_fd(const void *ctx, int fd)
 {
 	int ret;
 	unsigned int max = 16384, size = 0;
@@ -35,10 +35,10 @@ void *grab_fd(const void *ctx, int fd)
 		buffer[size] = '\0';
 
 	return buffer;
-}
+}*/
 
 /* This version adds one byte (for nul term) */
-void *grab_file(const void *ctx, const char *filename)
+/*void *grab_file(const void *ctx, const char *filename)
 {
 	int fd;
 	char *buffer;
@@ -54,5 +54,5 @@ void *grab_file(const void *ctx, const char *filename)
 	buffer = grab_fd(ctx, fd);
 	close_no_errno(fd);
 	return buffer;
-}
+}*/
 

+ 0 - 3
tools/tools.h

@@ -5,8 +5,5 @@
 
 char **get_deps(const void *ctx, const char *dir);
 
-void *grab_fd(const void *ctx, int fd);
-void *grab_file(const void *ctx, const char *filename);
-
 #endif /* CCAN_TOOLS_H */