liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

defs.h (1184B)


      1 #include <sys/stat.h>
      2 #include <unistd.h>
      3 #include <sys/sysmacros.h>
      4 #include <fcntl.h>
      5 #include <string.h>
      6 #include <stdlib.h>
      7 
      8 void print_file(char * path, mode_t mode, char * text) {
      9   int fd = open(path, O_CREAT | O_WRONLY, mode);
     10   char *p, *nxt;
     11   char b[1];
     12   if(fd >=0) {
     13     p = text;
     14     while(nxt = strchr(p, '\\')) {
     15       char upper = nxt[2];
     16       char lower = nxt[3];
     17       upper = (upper>'9') ? ((upper | 32) - 'a' + 10) : (upper - '0');
     18       lower = (lower>'9') ? ((lower | 32) - 'a' + 10) : (lower - '0');
     19       b[0] = (upper << 4) + lower;
     20       write(fd, p, nxt-p);
     21       write(fd, b, 1);
     22       p=nxt+4;
     23     }
     24     write(fd, p, strlen(p));
     25     close(fd);
     26   }
     27 }
     28 
     29 
     30 
     31 #define PRINTFILE(path, mode, text) print_file(path, (mode_t) mode, text)
     32 #define MKDIR(path, mode) mkdir(path, mode)
     33 #define MKNOD_C(path, mode, major,minor) mknod(path, mode | S_IFCHR, makedev(major, minor))
     34 #define MKNOD_B(path, mode, major,minor) mknod(path, mode | S_IFBLK, makedev(major, minor))
     35 #define LN_S(target, path) (void)symlink(target, path)
     36 #define LN(target, path) link(target, path)
     37 #define MKNOD_P(path, mode) mkfifo(path, mode)
     38 #define CHOWN(path, uid, gid) chown(path, uid, gid)