summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/utils.c
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2007-08-27 13:18:22 +0000
committerOlivier Blin <oblin@mandriva.com>2007-08-27 13:18:22 +0000
commitf82916359be360c46950fc37cd04e73288ebe918 (patch)
tree9464dcb5e0144dd817398da530dc5815aa2544e2 /mdk-stage1/utils.c
parent14817fd460bd1ec65c69a64fc4300d0ba8ac67c2 (diff)
downloaddrakx-f82916359be360c46950fc37cd04e73288ebe918.tar
drakx-f82916359be360c46950fc37cd04e73288ebe918.tar.gz
drakx-f82916359be360c46950fc37cd04e73288ebe918.tar.bz2
drakx-f82916359be360c46950fc37cd04e73288ebe918.tar.xz
drakx-f82916359be360c46950fc37cd04e73288ebe918.zip
move some code in new cat_file and line_counts functions
Diffstat (limited to 'mdk-stage1/utils.c')
-rw-r--r--mdk-stage1/utils.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/mdk-stage1/utils.c b/mdk-stage1/utils.c
index 5e25c41ff..4846a0aea 100644
--- a/mdk-stage1/utils.c
+++ b/mdk-stage1/utils.c
@@ -16,6 +16,7 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <fcntl.h>
#include <unistd.h>
#include <ctype.h>
#include <dirent.h>
@@ -46,6 +47,38 @@ off_t file_size(const char * path)
return statr.st_size;
}
+char * cat_file(const char * file, struct stat * s) {
+ char * buf;
+ int fd = open(file, O_RDONLY);
+ if (fd == -1) {
+ log_perror(file);
+ return NULL;
+ }
+
+ fstat(fd, s);
+ buf = malloc(s->st_size + 1);
+ if (read(fd, buf, s->st_size) != (ssize_t)s->st_size) {
+ close(fd);
+ free(buf);
+ log_perror(file);
+ return NULL;
+ }
+ buf[s->st_size] = '\0';
+ close(fd);
+
+ return buf;
+}
+
+int line_counts(const char * buf) {
+ const char * ptr = buf;
+ int line = 0;
+ while (ptr) {
+ line++;
+ ptr = strchr(ptr + 1, '\n');
+ }
+ return line;
+}
+
int total_memory(void)
{
int value;