Add implemenation of lrealpath. This works like realpath, but returns
authorJoerg Sonnenberger <joerg@dragonflybsd.org>
Wed, 9 Jun 2004 12:32:07 +0000 (12:32 +0000)
committerJoerg Sonnenberger <joerg@dragonflybsd.org>
Wed, 9 Jun 2004 12:32:07 +0000 (12:32 +0000)
a dynamically allocated string or a copy of the original pathname, if
realpath(3) failed. This can return NULL, if malloc(3) failed.

include/libiberty.h
lib/libiberty/Makefile
lib/libiberty/lrealpath.c [copied from include/libiberty.h with 71% similarity]

index 3ccf13b..2e8d178 100644 (file)
@@ -22,7 +22,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/include/libiberty.h,v 1.1 2004/06/09 10:42:32 joerg Exp $
+ * $DragonFly: src/include/libiberty.h,v 1.2 2004/06/09 12:32:07 joerg Exp $
  */
 
 #ifndef _LIBIBERTY_H_
@@ -31,7 +31,8 @@
 #include <sys/cdefs.h>
 
 __BEGIN_DECLS
-const char *   lbasename(const char*);
+const char *   lbasename(const char *);
+char *         lrealpath(const char *);
 __END_DECLS
 
 #endif
index b24923d..5b43c23 100644 (file)
@@ -1,8 +1,8 @@
-# $DragonFly: src/lib/libiberty/Makefile,v 1.1 2004/06/09 10:42:32 joerg Exp $
+# $DragonFly: src/lib/libiberty/Makefile,v 1.2 2004/06/09 12:32:07 joerg Exp $
 
 LIB=           iberty
 SHLIB_MAJOR=   1
-SRCS=          lbasename.c
+SRCS=          lbasename.c lrealpath.c
 
 NOMAN=1
 
similarity index 71%
copy from include/libiberty.h
copy to lib/libiberty/lrealpath.c
index 3ccf13b..2a92f6d 100644 (file)
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
  *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/include/libiberty.h,v 1.1 2004/06/09 10:42:32 joerg Exp $
+ * $DragonFly: src/lib/libiberty/lrealpath.c,v 1.1 2004/06/09 12:32:07 joerg Exp $
  */
 
-#ifndef _LIBIBERTY_H_
-#define _LIBIBERTY_H_
+#include <sys/param.h>
+#include <stdlib.h>
+#include <string.h>
 
-#include <sys/cdefs.h>
+char *
+lrealpath(const char *pathname)
+{
+       char resolved_path[MAXPATHLEN];
 
-__BEGIN_DECLS
-const char *   lbasename(const char*);
-__END_DECLS
-
-#endif
+       if (realpath(pathname, resolved_path) == NULL)
+               return(strdup(resolved_path));
+       else
+               return(strdup(pathname));
+}