Fix #version's stat
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 25 May 2016 16:29:18 +0000 (12:29 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Jun 2016 15:48:38 +0000 (11:48 -0400)
The stat length in the devtab is 0 for all strings.  We should be reporting
the length of what you can read, which is strlen + 1 (for the \0).

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/drivers/dev/version.c

index 8419926..a8ed8db 100644 (file)
@@ -44,6 +44,13 @@ static long ver_emit_nlstr(char *dest, const char *src, long size,
        return n;
 }
 
+static size_t ver_get_file_size(const char *src)
+{
+       if (!src)
+               return 0;
+       return strlen(src) + 1;
+}
+
 static struct chan *ver_attach(char *spec)
 {
        return devattach(verdevtab.name, spec);
@@ -51,7 +58,11 @@ static struct chan *ver_attach(char *spec)
 
 static void ver_init(void)
 {
-
+       /* Our devtab's length params are wrong - need to stitch them up. */
+       vertab[Kverdate].length = ver_get_file_size(build_info_date);
+       vertab[Kvercommitid].length = ver_get_file_size(build_info_commitid);
+       vertab[Kverversion].length = ver_get_file_size(build_info_version);
+       vertab[Kverversionname].length = ver_get_file_size(build_info_version_name);
 }
 
 static void ver_shutdown(void)