summaryrefslogtreecommitdiffstats
path: root/src/util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2003-12-15 23:20:10 +0000
committerLennart Poettering <lennart@poettering.net>2003-12-15 23:20:10 +0000
commitc35f713ae46fef0bf5d5dbab434c2f581e1d1181 (patch)
tree38465e471c62fcff64b4dedfb88f5564a4afd34e /src/util.c
parent6883bbb1e8fcdf359716dcd5af44ca6ece55b16b (diff)
many more stuff
git-svn-id: file:///home/lennart/svn/public/ivam2/trunk@5 dbf6933d-3bce-0310-9bcc-ed052ba35b35
Diffstat (limited to 'src/util.c')
-rw-r--r--src/util.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/util.c b/src/util.c
new file mode 100644
index 0000000..415da09
--- /dev/null
+++ b/src/util.c
@@ -0,0 +1,44 @@
+#include "util.h"
+
+char *basename(const char *path) {
+ const char *p;
+
+ if (p = strrchr(path, '/'))
+ return p+1;
+
+ return path;
+}
+
+ssize_t loop_read(int FILEDES, void *BUFFER, size_t SIZE) {
+ int c = 0;
+
+ while (SIZE > 0) {
+ int r = read(FILEDES, BUFFER, SIZE);
+
+ if (r <= 0)
+ break;
+
+ SIZE -= r;
+ c += r;
+ BUFFER = ((void*) (((char*) BUFFER) + r));
+ }
+
+ return c;
+}
+
+ssize_t loop_write(int FILEDES, const void *BUFFER, size_t SIZE) {
+ int c = 0;
+
+ while (SIZE > 0) {
+ int r = write(FILEDES, BUFFER, SIZE);
+
+ if (r <= 0)
+ break;
+
+ SIZE -= r;
+ c += r;
+ BUFFER = ((void*) (((char*) BUFFER) + r));
+ }
+
+ return c;
+}