changeset 878:4f1228efbdca

Switched to realpath() instead of rel2abs() for GTK1/2 for now also. Removed rel2abs.c and references in Makefile.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 06 Apr 2011 08:14:01 +0000
parents d3693ceec9b1
children 6382fd88b49a
files Makefile.in gtk/dw.c gtk/rel2abs.c
diffstat 3 files changed, 3 insertions(+), 151 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.in	Wed Apr 06 07:32:28 2011 +0000
+++ b/Makefile.in	Wed Apr 06 08:14:01 2011 +0000
@@ -15,11 +15,11 @@
 DW_DIR  =	@DW_DIR@
 INCPATH	=	-I.. -I. -I$(srcdir)
 TARGET	=	@TARGET@
-SRCS	=	$(srcdir)/$(DW_DIR)/$(DW_SRC) $(DW_DIR)rel2abs.c
+SRCS	=	$(srcdir)/$(DW_DIR)/$(DW_SRC)
 BROWSER_OBJECT=@BROWSER_OBJECT@
 COMPAT_OBJECT=@COMPAT_OBJECT@
 INSTALL_COMPAT=@INSTALL_COMPAT@
-OBJECTS	=	dw.o rel2abs.o $(BROWSER_OBJECT)
+OBJECTS	=	dw.o $(BROWSER_OBJECT)
 SRCS2	=	$(srcdir)compat.c
 OBJECTS2=	$(COMPAT_OBJECT)
 TARGET2=	@TARGET2@
@@ -145,9 +145,6 @@
 compat.o: $(srcdir)/compat.c
 	$(CC) -c $(INCPATH) $(CCFLAGS) -o $@ $(srcdir)/compat.c
 
-rel2abs.o: $(srcdir)/gtk/rel2abs.c
-	$(CC) -c $(INCPATH) $(CCFLAGS) -o $@ $(srcdir)/gtk/rel2abs.c
-
 dwtest.o: $(srcdir)/dwtest.c $(srcdir)/dw.h
 	$(CC) -c $(INCPATH) $(CCFLAGS) -o $@ $(srcdir)/dwtest.c
 
--- a/gtk/dw.c	Wed Apr 06 07:32:28 2011 +0000
+++ b/gtk/dw.c	Wed Apr 06 08:14:01 2011 +0000
@@ -10920,22 +10920,10 @@
 
    if ( defpath )
    {
-      if ( g_path_is_absolute( defpath ) )
+      if ( g_path_is_absolute( defpath ) || !realpath(defpath, mypath))
       {
          strcpy( mypath, defpath );
       }
-      else
-      {
-         if ( !getcwd(cwd, PATH_MAX ) )
-         {
-         }
-         else
-         {
-            if ( rel2abs( defpath, cwd, mypath, PATH_MAX ) )
-            {
-            }
-         }
-      }
       gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER( filew ), mypath );
    }
 
--- a/gtk/rel2abs.c	Wed Apr 06 07:32:28 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/*
- * Copyright (c) 1997 Shigio Yamaguchi. All rights reserved.
- * Copyright (c) 1999 Tama Communications Corporation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    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 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 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)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-/*
- * rel2abs: convert an relative path name into absolute.
- *
- *	i)	path	relative path
- *	i)	base	base directory (must be absolute path)
- *	o)	result	result buffer
- *	i)	size	size of result buffer
- *	r)		!= NULL: absolute path
- *			== NULL: error
- */
-char *
-rel2abs(path, base, result, size)
-	const char *path;
-	const char *base;
-	char *result;
-	const size_t size;
-{
-	const char *pp, *bp;
-	/*
-	 * endp points the last position which is safe in the result buffer.
-	 */
-	const char *endp = result + size - 1;
-	char *rp;
-	int length;
-
-	if (*path == '/') {
-		if (strlen(path) >= size)
-			goto erange;
-		strcpy(result, path);
-		goto finish;
-	} else if (*base != '/' || !size) {
-		errno = EINVAL;
-		return (NULL);
-	} else if (size == 1)
-		goto erange;
-
-	length = strlen(base);
-
-	if (!strcmp(path, ".") || !strcmp(path, "./")) {
-		if (length >= size)
-			goto erange;
-		strcpy(result, base);
-		/*
-		 * rp points the last char.
-		 */
-		rp = result + length - 1;
-		/*
-		 * remove the last '/'.
-		 */
-		if (*rp == '/') {
-			if (length > 1)
-				*rp = 0;
-		} else
-			rp++;
-		/* rp point NULL char */
-		if (*++path == '/') {
-			/*
-			 * Append '/' to the tail of path name.
-			 */
-			*rp++ = '/';
-			if (rp > endp)
-				goto erange;
-			*rp = 0;
-		}
-		goto finish;
-	}
-	bp = base + length;
-	if (*(bp - 1) == '/')
-		--bp;
-	/*
-	 * up to root.
-	 */
-	for (pp = path; *pp && *pp == '.'; ) {
-		if (!strncmp(pp, "../", 3)) {
-			pp += 3;
-			while (bp > base && *--bp != '/')
-				;
-		} else if (!strncmp(pp, "./", 2)) {
-			pp += 2;
-		} else if (!strncmp(pp, "..\0", 3)) {
-			pp += 2;
-			while (bp > base && *--bp != '/')
-				;
-		} else
-			break;
-	}
-	/*
-	 * down to leaf.
-	 */
-	length = bp - base;
-	if (length >= size)
-		goto erange;
-	strncpy(result, base, length);
-	rp = result + length;
-	if (*pp || *(pp - 1) == '/' || length == 0)
-		*rp++ = '/';
-	if (rp + strlen(pp) > endp)
-		goto erange;
-	strcpy(rp, pp);
-finish:
-	return result;
-erange:
-	errno = ERANGE;
-	return (NULL);
-}