OSDN Git Service

Enable readfile() and add peek() and poke() functions.
authorRob Landley <rob@landley.net>
Sun, 2 Jun 2013 01:41:35 +0000 (20:41 -0500)
committerRob Landley <rob@landley.net>
Sun, 2 Jun 2013 01:41:35 +0000 (20:41 -0500)
lib/lib.c

index 813677d..7b0cf1a 100644 (file)
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -712,9 +712,6 @@ char *xreadlink(char *name)
   }
 }
 
-/*
- This might be of use or might not.  Unknown yet...
-
 // Read contents of file as a single freshly allocated nul-terminated string.
 char *readfile(char *name)
 {
@@ -738,9 +735,6 @@ char *xreadfile(char *name)
   return buf;
 }
 
-*/
-
-
 // Sleep for this many thousandths of a second
 void msleep(long miliseconds)
 {
@@ -762,6 +756,40 @@ int xioctl(int fd, int request, void *data)
   return rc;
 }
 
+int64_t peek(void *ptr, int size)
+{
+  if (size & 8) {
+    int64_t *p = (int64_t *)ptr;
+    return *p;
+  } else if (size & 4) {
+    int *p = (int *)ptr;
+    return *p;
+  } else if (size & 2) {
+    short *p = (short *)ptr;
+    return *p;
+  } else {
+    char *p = (char *)ptr;
+    return *p;
+  }
+}
+
+void poke(void *ptr, uint64_t val, int size)
+{
+  if (size & 8) {
+    uint64_t *p = (uint64_t *)ptr;
+    *p = val;
+  } else if (size & 4) {
+    int *p = (int *)ptr;
+    *p = val;
+  } else if (size & 2) {
+    short *p = (short *)ptr;
+    *p = val;
+  } else {
+    char *p = (char *)ptr;
+    *p = val;
+  }
+}
+
 // Open a /var/run/NAME.pid file, dying if we can't write it or if it currently
 // exists and is this executable.
 void xpidfile(char *name)