This is the mail archive of the newlib@sources.redhat.com mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: libgen: basename and dirname [PATCH]


Checked in with massaging. The declarations of functions and their prototypes should use the _DEFUN and _EXFUN macros from <_ansi.h>.

I moved the functions to ELIX_LEVEL_4_OBJS. You will see the same thing as you do now.

I also created a new libgen.h header file from scratch that doesn't have the Cygwin license..

-- Jeff J.

Shaun Jackman wrote:
On Apr 8, 2005 10:51 AM, Jeff Johnston <jjohnstn@redhat.com> wrote:

I realize it is a pain, but it could be a whole lot worse if we forced everyone
to sign a permission form like the FSF does.

Regards,

-- Jeff J.


It's not a problem. I understand the purpose of copyrights and
licenses. Here's the revised patch. I stole libgen.h from
winsup/cygwin/include/libgen.h..

Cheers,
Shaun

2005-04-08 Shaun Jackman <sjackman@gmail.com>

	* libc/unix/Makefile.am: Add basename.c and dirname.c to GENERAL_SOURCES.
	* libc/include/libgen.h: New file.
	* libc/unix/basename.c: Ditto.
	* libc/unix/dirname.c: Ditto.

diff -u -r1.4 Makefile.am
--- libc/unix/Makefile.am 26 Aug 2002 18:56:09 -0000 1.4
+++ libc/unix/Makefile.am 8 Apr 2005 18:25:57 -0000
@@ -5,6 +5,8 @@
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
GENERAL_SOURCES = \
+ basename.c \
+ dirname.c \
getcwd.c \
pread.c \
pwrite.c \
diff -u /dev/null libc/include/libgen.h
--- /dev/null 2005-04-04 21:44:30.000000000 -0700
+++ libc/include/libgen.h 2005-04-08 10:12:06.000000000 -0700
@@ -0,0 +1,23 @@
+/* libgen.h
+
+ Copyright 2005 Red Hat, Inc.
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+#ifndef _LIBGEN_H
+#define _LIBGEN_H
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+extern char *basename (char *path);
+extern char *dirname (char *path);
+
+__END_DECLS
+
+#endif /* _LIBGEN_H */
diff -u /dev/null libc/unix/basename.c
--- /dev/null 2005-04-04 21:44:30.000000000 -0700
+++ libc/unix/basename.c 2005-04-08 11:28:08.000000000 -0700
@@ -0,0 +1,22 @@
+/* Copyright 2005 Shaun Jackman
+ * Permission to use, copy, modify, and distribute this software
+ * is freely granted, provided that this notice is preserved.
+ */
+
+#include <string.h>
+
+char* basename(char *path)
+{
+ char *p;
+ if( path == NULL || *path == '\0' )
+ return ".";
+ p = path + strlen(path) - 1;
+ while( *p == '/' ) {
+ if( p == path )
+ return path;
+ *p-- = '\0';
+ }
+ while( p >= path && *p != '/' )
+ p--;
+ return p + 1;
+}
diff -u /dev/null libc/unix/dirname.c
--- /dev/null 2005-04-04 21:44:30.000000000 -0700
+++ libc/unix/dirname.c 2005-04-08 11:28:11.000000000 -0700
@@ -0,0 +1,25 @@
+/* Copyright 2005 Shaun Jackman
+ * Permission to use, copy, modify, and distribute this software
+ * is freely granted, provided that this notice is preserved.
+ */
+
+#include <string.h>
+
+char* dirname(char *path)
+{
+ char *p;
+ if( path == NULL || *path == '\0' )
+ return ".";
+ p = path + strlen(path) - 1;
+ while( *p == '/' ) {
+ if( p == path )
+ return path;
+ *p-- = '\0';
+ }
+ while( p >= path && *p != '/' )
+ p--;
+ return
+ p < path ? "." :
+ p == path ? "/" :
+ (*p = '\0', path);
+}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]