Thread

  1. SunOS patches

    Tatsuo Ishii <t-ishii@sra.co.jp> — 1998-02-25T02:51:52Z

    Included are patches for SunOS port based on the Feb 24 snapshot.
    Remaining problems are some minor compiling errors of ecpg and strange
    NOTICE messages from initdb (known bug?).  I have tested the patches
    on FreeBSD and Solairs2.6 to make sure they do not break other ports.
    
    o added SunOS support to template/.similar
    
    o changed UNIXSOCK_PATH macro in include/libpq/pqcomm.h. The macro
    supposes sprintf() return the length of the result
    string. Unfortunately on some platforms such as SunOS sprintf() never
    returns value (I guess that behavior was inherited from BSD4.2). So I
    changed in more portable way using strlen().
    
    o changed backend/libpq/pqcomm.c. It uses atexit() to unlink an Unix
    domain socket when postmaster exits. Again unfortunately SunOS does
    not have it. Looking for an alternative, I found a general exiting
    callback manager called on_exitpg() has already existed in PostgreSQL!
    So I replaced atexit() with on_exitpg().
    
    Tatsuo Ishii
    t-ishii@sra.co.jp
    ----------------------------------------------------------------
    *** template/.similar.orig	Wed Feb 25 10:00:55 1998
    --- template/.similar	Wed Feb 25 10:03:02 1998
    ***************
    *** 20,22 ****
    --- 20,26 ----
      powerpc-unknown-linux-gnu=linux-elf
      sparc-sun-solaris=sparc_solaris-gcc
      sparc-unknown-linux-gnu=linux-elf-sparc
    + sparc-sun-sunos4.1.3=sunos4-gcc
    + sparc-sun-sunos4.1.3_JL=sunos4-gcc
    + sparc-sun-sunos4.1.4=sunos4-gcc
    + sparc-sun-sunos4.1.4_JL=sunos4-gcc
    *** backend/libpq/pqcomm.c.orig	Wed Feb 25 10:04:28 1998
    --- backend/libpq/pqcomm.c	Wed Feb 25 10:05:57 1998
    ***************
    *** 645,651 ****
      	if (family == AF_UNIX)
      	  {
      	    chmod(sock_path, 0777);
    ! 	    atexit(do_unlink);
      	  }
      	return (STATUS_OK);
      }
    --- 645,651 ----
      	if (family == AF_UNIX)
      	  {
      	    chmod(sock_path, 0777);
    !  	    on_exitpg(do_unlink,0);
      	  }
      	return (STATUS_OK);
      }
    *** include/libpq/pqcomm.h.orig	Wed Feb 25 10:07:25 1998
    --- include/libpq/pqcomm.h	Wed Feb 25 10:07:41 1998
    ***************
    *** 34,41 ****
      /* Configure the UNIX socket address for the well known port. */
      
      #define	UNIXSOCK_PATH(sun,port) \
    ! 	(sprintf((sun).sun_path, "/tmp/.s.PGSQL.%d", (port)) + \
    ! 		offsetof(struct sockaddr_un, sun_path))
      /*
       *		We do this because sun_len is in BSD's struct, while others don't.
       *		We never actually set BSD's sun_len, and I can't think of a
    --- 34,41 ----
      /* Configure the UNIX socket address for the well known port. */
      
      #define	UNIXSOCK_PATH(sun,port) \
    ! 	(sprintf((sun).sun_path, "/tmp/.s.PGSQL.%d", (port)), \
    ! 	 strlen((sun).sun_path)+ offsetof(struct sockaddr_un, sun_path))
      /*
       *		We do this because sun_len is in BSD's struct, while others don't.
       *		We never actually set BSD's sun_len, and I can't think of a