summaryrefslogtreecommitdiffstats
path: root/tools/iself/iself.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/iself/iself.c')
-rw-r--r--tools/iself/iself.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/tools/iself/iself.c b/tools/iself/iself.c
new file mode 100644
index 0000000..e634a22
--- /dev/null
+++ b/tools/iself/iself.c
@@ -0,0 +1,36 @@
+#include <debug.h>
+#include <unistd.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
+
+int
+main(int argc, char **argv)
+{
+ char *fname;
+ int fd;
+ char magic[4];
+
+ argc--, argv++;
+ FAILIF(argc != 1, "Expecting a file name!\n");
+ fname = *argv;
+
+ fd = open(fname, O_RDONLY);
+ FAILIF(fd < 0, "Error opening %s for reading: %s (%d)!\n",
+ fname, strerror(errno), errno);
+
+ FAILIF(4 != read(fd, magic, 4),
+ "Could not read first 4 bytes from %s: %s (%d)!\n",
+ fname, strerror(errno), errno);
+
+ if (magic[0] != 0x7f) return 1;
+ if (magic[1] != 'E') return 1;
+ if (magic[2] != 'L') return 1;
+ if (magic[3] != 'F') return 1;
+
+ return 0;
+}