aboutsummaryrefslogtreecommitdiff
path: root/pd/src/s_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'pd/src/s_file.c')
-rw-r--r--pd/src/s_file.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/pd/src/s_file.c b/pd/src/s_file.c
new file mode 100644
index 00000000..32d2fcaa
--- /dev/null
+++ b/pd/src/s_file.c
@@ -0,0 +1,54 @@
+/* Copyright (c) 1997-1999 Miller Puckette.
+* For information on usage and redistribution, and for a DISCLAIMER OF ALL
+* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
+
+/*
+ * this file contains file-handling routines.
+ */
+
+#include "m_imp.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+
+ /* LATER delete this? -- replaced by find_via_path() in s_path.c */
+int sys_isreadablefile(const char *s)
+{
+ struct stat statbuf;
+ int mode;
+ if (stat(s, &statbuf) < 0) return (0);
+#ifdef UNIX
+ mode = statbuf.st_mode;
+ if (S_ISDIR(mode)) return (0);
+#endif
+ return (1);
+}
+
+ /* change '/' characters to the system's native file separator */
+void sys_bashfilename(const char *from, char *to)
+{
+ char c;
+ while (c = *from++)
+ {
+#ifdef NT
+ if (c == '/') c = '\\';
+#endif
+ *to++ = c;
+ }
+ *to = 0;
+}
+
+
+ /* change the system's native file separator to '/' characters */
+void sys_unbashfilename(const char *from, char *to)
+{
+ char c;
+ while (c = *from++)
+ {
+#ifdef NT
+ if (c == '\\') c = '/';
+#endif
+ *to++ = c;
+ }
+ *to = 0;
+}
+