com32 pwd module
authorGene Cumm <gene.cumm@gmail.com>
Sat, 26 Jun 2010 14:59:46 +0000 (10:59 -0400)
committerH. Peter Anvin <hpa@zytor.com>
Sat, 26 Jun 2010 19:34:07 +0000 (12:34 -0700)
[MODULE] pwd to list present (current) working directory.  If the
returned string is empty, display ".".  If the return value is NULL,
display an error message.

Unfortunately, it appears that COM32 getcwd is not working properly at
this moment, it calling the COMBOOT call and getting an empty string.

Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
com32/modules/pwd.c [new file with mode: 0644]

diff --git a/com32/modules/pwd.c b/com32/modules/pwd.c
new file mode 100644 (file)
index 0000000..880327d
--- /dev/null
@@ -0,0 +1,51 @@
+/* ----------------------------------------------------------------------- *
+ *
+ *   Copyright 2010 Gene Cumm - All Rights Reserved
+ *
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
+ *   Boston MA 02111-1307, USA; either version 2 of the License, or
+ *   (at your option) any later version; incorporated herein by reference.
+ *
+ * ----------------------------------------------------------------------- */
+
+/*
+ * Display present (current) working directory
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <console.h>
+#include <unistd.h>
+#include <dirent.h>
+
+/* Size of path buffer string */
+#ifndef PATH_MAX
+#  ifdef NAME_MAX
+#    define PATH_MAX   NAME_MAX
+#  elif FILENAME_MAX
+#    define PATH_MAX   FILENAME_MAX
+#  else
+#    define PATH_MAX   256
+#  endif       /* NAME_MAX */
+#endif /* PATH_MAX */
+
+int main(void)
+{
+    int rv = 0;
+    char pwd[PATH_MAX], *pwdptr;
+
+    openconsole(&dev_rawcon_r, &dev_stdcon_w);
+    pwdptr = getcwd(pwd, PATH_MAX);
+    if (pwdptr) {
+       if (pwd[0] != 0)
+           puts(pwd);
+       else
+           puts(".");
+    } else {
+       rv = errno;
+       puts("ERROR: getcwd() returned NULL");
+    }
+    return rv;
+}