summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGene Cumm <gene.cumm@gmail.com>2010-06-26 10:59:46 -0400
committerH. Peter Anvin <hpa@zytor.com>2010-06-26 12:34:07 -0700
commite9654e598bab36d0c5218163263baf4105db5ae0 (patch)
treefd3abb34a1fb36811947dc290cecf7476c807358
parent29d560e6bb11bc4a9171e1e70c9f282bf7cb6895 (diff)
downloadsyslinux-e9654e598bab36d0c5218163263baf4105db5ae0.tar.gz
com32 pwd module
[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>
-rw-r--r--com32/modules/pwd.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/com32/modules/pwd.c b/com32/modules/pwd.c
new file mode 100644
index 00000000..880327d6
--- /dev/null
+++ b/com32/modules/pwd.c
@@ -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;
+}