Allow for certain device APIs to be NULL
[akaros.git] / kern / src / ns / convM2kdirent.c
index 3b64183..bd3d2b1 100644 (file)
@@ -31,7 +31,8 @@ struct kdirent {
 
 #endif
 
-unsigned int convM2kdirent(uint8_t * buf, unsigned int nbuf, struct kdirent *kd, char *strs)
+unsigned int convM2kdirent(uint8_t * buf, unsigned int nbuf, struct kdirent *kd,
+                                                  char *strs)
 {
        uint8_t *p, *ebuf;
        char *sv[4];
@@ -76,7 +77,7 @@ unsigned int convM2kdirent(uint8_t * buf, unsigned int nbuf, struct kdirent *kd,
                p += BIT16SZ;
                if (p + ns > ebuf)
                        return 0;
-               if(strs){
+               if (strs) {
                        sv[i] = strs;
                        memmove(strs, p, ns);
                        strs += ns;
@@ -123,13 +124,16 @@ unsigned int convM2kstat(uint8_t * buf, unsigned int nbuf, struct kstat *ks)
        if (ks->st_mode & DMDIR) {
                ks->st_mode &= ~DMDIR;
                ks->st_mode |= __S_IFDIR;
+       } else if (ks->st_mode & DMSYMLINK) {
+               ks->st_mode &= ~DMSYMLINK;
+               ks->st_mode |= __S_IFLNK;
        } else {
                ks->st_mode |= __S_IFREG;
        }
        p += BIT32SZ;
-       ks->st_atime.tv_sec = GBIT32(p);
+       ks->st_atim.tv_sec = GBIT32(p);
        p += BIT32SZ;
-       ks->st_mtime.tv_sec = GBIT32(p);
+       ks->st_mtim.tv_sec = GBIT32(p);
        p += BIT32SZ;
        ks->st_size = GBIT64(p);
        p += BIT64SZ;
@@ -139,5 +143,5 @@ unsigned int convM2kstat(uint8_t * buf, unsigned int nbuf, struct kstat *ks)
        ks->st_nlink = 2;       // links make no sense any more. 
        ks->st_uid = ks->st_gid = 0;
 
-       return p - buf;
- }
+       return p - buf;
+}