I have run into a rather perplexing problem with shp2pgsql from PostGIS 1.3.1 and 1.3.2 on Mac OS X Leopard. As far as I can tell, the optarg and optind variables declared in ParseCmdline() of loader/ shp2pgsql.c are being linked to the globals declared in unistd.h rather than those in loader/getopt.h. The result is that references to these variables in ParseCmdline() give the wrong values. Specifically, optarg is always NULL, and optind is 0 until the loop in lines 1363 through 1377.

Looking at the output from the preprocessor, optarg, optind, opterr, and optopt are all declared twice. The first is from unistd.h, and the second is from PostGIS' loader/getopt.h. If I remove the #include directive for unistd.h, shp2pgsql compiles, links, and runs correctly, although there is a compiler warning saying that getopt() is not declared.

My guess is that there is some compiler or linker option that might fix this behavior, but I have not been able to determine what that might be. Removing the inclusion of unistd.h does not seem like the best fix, but it is a workaround that gets things running for me.

 -Patrick


--
Patrick L. Hartling
Senior Software Engineer, Priority 5
http://www.priority5.com/

Attachment: PGP.sig
Description: This is a digitally signed message part

_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to