| From: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> | 
|---|---|
| To: | Reini Urban <rurban(at)x-ray(dot)at> | 
| Cc: | PostgreSQL Developers <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | Re: open item: tablespace handing in pg_dump/pg_restore | 
| Date: | 2004-10-04 19:01:12 | 
| Message-ID: | 200410041901.i94J1CG18426@candle.pha.pa.us | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-cygwin pgsql-hackers pgsql-hackers-win32 | 
I am confused.  CVS has in port.h:
	
	#if defined(WIN32) || defined(__CYGWIN__)
	/*
	 *  Win32 doesn't have reliable rename/unlink during concurrent access,
	 *  and we need special code to do symlinks.
	 */
	extern int  pgrename(const char *from, const char *to);
	extern int  pgunlink(const char *path);
	extern int  pgsymlink(const char *oldpath, const char *newpath);
	...
	#define rename(from, to)        pgrename(from, to)
	#define unlink(path)            pgunlink(path)
	#define symlink(oldpath, newpath)   pgsymlink(oldpath, newpath)
so you should already be calling the junction code on Cygwin.
---------------------------------------------------------------------------
Reini Urban wrote:
> Tom Lane schrieb:
> > Gavin Sherry <swm(at)linuxworld(dot)com(dot)au> writes:
> >>I though this may have been the problem. configure.in defines HAVE_SYMLINK
> >>to 1 if we are win32. It seems that for Reini's case we are setting our
> >>template (and PORTNAME) to win32 when I suspect it should be cygwin.
> >>Anyone got any ideas?
> > 
> > What are the prospects of making the junction code work under cygwin?
> 
> Somethink like the attached patch is easier.
> Just replace symlink() for dirs with link() #ifdef  __CYGWIN__
> 
> just wait a sec until the tests run through...
> (completely fresh build)
> -- 
> Reini Urban
> http://xarch.tu-graz.ac.at/home/rurban/
> Index: tablespace.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/backend/commands/tablespace.c,v
> retrieving revision 1.11
> diff -u -b -r1.11 tablespace.c
> --- tablespace.c	30 Aug 2004 02:54:38 -0000	1.11
> +++ tablespace.c	4 Oct 2004 18:37:13 -0000
> @@ -349,7 +349,11 @@
>  	linkloc = (char *) palloc(strlen(DataDir) + 11 + 10 + 1);
>  	sprintf(linkloc, "%s/pg_tblspc/%u", DataDir, tablespaceoid);
>  
> +#ifdef __CYGWIN__
> +	if (link(location, linkloc) < 0)
> +#else
>  	if (symlink(location, linkloc) < 0)
> +#endif
>  		ereport(ERROR,
>  				(errcode_for_file_access(),
>  				 errmsg("could not create symbolic link \"%s\": %m",
> @@ -976,7 +980,11 @@
>  		linkloc = (char *) palloc(strlen(DataDir) + 11 + 10 + 1);
>  		sprintf(linkloc, "%s/pg_tblspc/%u", DataDir, xlrec->ts_id);
>  
> +#ifdef __CYGWIN__
> +		if (link(location, linkloc) < 0)
> +#else
>  		if (symlink(location, linkloc) < 0)
> +#endif
>  		{
>  			if (errno != EEXIST)
>  				ereport(ERROR,
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>       subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
>       message can get through to the mailing list cleanly
-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman(at)candle(dot)pha(dot)pa(dot)us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Wayne Phillips | 2004-10-04 19:14:23 | on w2k or xp? | 
| Previous Message | Reini Urban | 2004-10-04 18:40:55 | Re: open item: tablespace handing in pg_dump/pg_restore | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alvaro Herrera | 2004-10-04 19:10:24 | Re: SQL-Invoked Procedures for 8.1 | 
| Previous Message | Jim C. Nasby | 2004-10-04 18:55:21 | Re: SQL-Invoked Procedures for 8.1 | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Reini Urban | 2004-10-04 19:20:57 | Re: open item: tablespace handing in pg_dump/pg_restore | 
| Previous Message | Reini Urban | 2004-10-04 18:40:55 | Re: open item: tablespace handing in pg_dump/pg_restore |