2002-02-20  Guerrero, Juan Manuel  <st001906@hrz1.hrz.tu-darmstadt.de>

	* configure.bat: Obsolete. Removed

	* djgpp/config.bat: New file. DJGPP specific.

	* djgpp/config.sed: New file. DJGPP specific.

	* djgpp/config.site: New file. DJGPP specific.

	* djgpp/README: New file. DJGPP specific.

	* doc/bison.texinfo: Add DJGPP specific information about
	  file name extensions used on different file systems.

	* src/files.c (output_files): MSDOS conditional removed.
	  New macro EXT_TYPE will provide at runtime the appropiate
	  output file extension.
	  (skeleton_find) [MSDOS]: __DJGPP__ conditional added to
	  inhibit the use of DOSish code.  POSIX like behaviour.

	* src/getargs.c [AS_FILE_NAME]: __DJGPP__ conditional added.
	  Check at runtime if LFN-API (case preserving) is available or not.
	  Do not unconditionly convert upper case strings in lower case strings.
	  src/getargs.c [AS_FILE_NAME] [__DJGPP__]: New macro STRLWR.
	  Check that no NULL pointer is passed to strlwr.

	* src/system.h [MSDOS] [__GO32__]: __DJGPP__ conditional added.
	  __GO32__ is obsolete and its use is deprecated.
	  [MSDOS]: __DJGPP__ conditional added.  Use pathconf
	  to choose POSIX or DOS file extensions at run time.
	  [MSDOS] [__DJGPP__]: New macro EXT_TYPE.  If LFN-API is
	  available, the src or header file extension (.c or .h) will be
	  added to the output file name. If no LFN-API is available no src
	  or header file extension will be added to the output file name.
	  [MSDOS] [!__DJGPP__]: New macro EXT_TYPE. Src file and header
	  file extension will never be added to the output file name.
	  [!MSDOS]: New macro EXT_TYPE. Src file and header file
	  extensions will always be added to the output file name.





diff -acprNC5 bison-1.33.orig/doc/bison.texinfo bison-1.33.djgpp/doc/bison.texinfo
*** bison-1.33.orig/doc/bison.texinfo	Sat Jan  5 13:21:48 2002
--- bison-1.33.djgpp/doc/bison.texinfo	Wed Feb 20 15:45:32 2002
*************** Handling Context Dependencies
*** 302,311 ****
--- 302,313 ----
  Invoking Bison
  
  * Bison Options::     All the options described in detail,
  			in alphabetical order by short options.
  * Option Cross Key::  Alphabetical list of long options.
+ * Extension Limitations Under DOS::  Bison output files extension differences
+ 					depending on the DOS/Windows file system flavour used.
  * VMS Invocation::    Bison command syntax on VMS.
  
  Copying This Manual
  
  * GNU Free Documentation License::  License for copying this manual.
*************** will produce @file{output.c++} and @file
*** 5045,5054 ****
--- 5047,5058 ----
  @menu
  * Bison Options::     All the options described in detail,
  			in alphabetical order by short options.
  * Environment Variables::  Variables which affect Bison execution.
  * Option Cross Key::  Alphabetical list of long options.
+ * Extension Limitations Under DOS::  Bison output files extension differences
+ 					depending on the DOS/Windows file system flavour used.
  * VMS Invocation::    Bison command syntax on VMS.
  @end menu
  
  @node Bison Options
  @section Bison Options
*************** the corresponding short option.
*** 5242,5251 ****
--- 5246,5288 ----
  --verbose                             -v
  --version                             -V
  @end example
  @end ifinfo
  
+ @node Extension Limitations Under DOS
+ @section Extension Limitations under DOS
+ @cindex extension limitations under DOS
+ @cindex DOS
+ 
+ On DOS/Windows 9X systems the file name extensions of the output files,
+ like @file{.tab.c}, that may be used depend on the file system in use.
+ The plain DOS file system has limited file name length, does not allow
+ the use of a set of certain illicit characters and does not allow more
+ than a single dot in the file name.
+ 
+ The DJGPP port of @code{bison} will detect at runtime if (LFN) long file name
+ support is available or not.  LFN support will be available in a DOS session
+ under Windows 9X and successors.  Windows NT 4.0 needs a special LFN driver
+ (@file{ntlfn08b.zip} or later available at any simtelnet mirror in the /v2misc
+ dir) for proper LFN support in a DOS session.  If LFN support is available the
+ DJGPP port of @code{bison} will use the standard POSIX file name extensions
+ of the output files.  If LFN support is not available, then the DJGPP port
+ of @code{bison} will use DOS specific file name extensions.
+ 
+ @noindent This table summarizes the used extensions:
+ 
+ @multitable @columnfractions 0.1 0.45 0.45
+ @item @tab LFN extension (Win9X) @tab SFN extension (plain DOS)
+ @item @tab @file{.tab.c} @tab @file{_tab.c}
+ @item @tab @file{.tab.h} @tab @file{_tab.h}
+ @item @tab @file{.tab.cpp} @tab @file{_tab.cpp}
+ @item @tab @file{.tab.hpp} @tab @file{_tab.hpp}
+ @item @tab @file{.output} @tab @file{.out}
+ @item @tab @file{.stype.h} @tab @file{.sth}
+ @item @tab @file{.guard.c} @tab @file{.guc}
+ @end multitable
+ 
  @node VMS Invocation
  @section Invoking Bison under VMS
  @cindex invoking Bison under VMS
  @cindex VMS
  
diff -acprNC5 bison-1.33.orig/src/files.c bison-1.33.djgpp/src/files.c
*** bison-1.33.orig/src/files.c	Mon Jan 21 15:41:46 2002
--- bison-1.33.djgpp/src/files.c	Wed Feb 20 15:45:32 2002
*************** defines_obstack_save (const char *filena
*** 212,222 ****
  const char *
  skeleton_find (const char *envvar, const char *skeleton_name)
  {
    const char *res = getenv (envvar);
  
! #if defined (MSDOS) || defined (_WIN32)
    const char *cp = getenv ("INIT");
    if (!res)
      {
        /* Skeleton file name without path */
        const char *skel_name = strrchr (skeleton_name, '/');
--- 212,222 ----
  const char *
  skeleton_find (const char *envvar, const char *skeleton_name)
  {
    const char *res = getenv (envvar);
  
! #if (defined (MSDOS) && !defined(__DJGPP__)) || defined (_WIN32)
    const char *cp = getenv ("INIT");
    if (!res)
      {
        /* Skeleton file name without path */
        const char *skel_name = strrchr (skeleton_name, '/');
*************** skeleton_find (const char *envvar, const
*** 247,257 ****
  	  res = XMALLOC (char, cp - program_name + strlen (skel_name) + 1);
  	  strncpy (res, program_name, cp - program_name);
  	  strcpy (res + (cp - program_name), skel_name);
  	}
      }
! #endif /* defined (MSDOS) || defined (_WIN32) */
    if (!res)
      res = skeleton_name;
  
    return res;
  }
--- 247,257 ----
  	  res = XMALLOC (char, cp - program_name + strlen (skel_name) + 1);
  	  strncpy (res, program_name, cp - program_name);
  	  strcpy (res + (cp - program_name), skel_name);
  	}
      }
! #endif /* (defined (MSDOS) && !defined (__DJGPP__)) || defined (_WIN32) */
    if (!res)
      res = skeleton_name;
  
    return res;
  }
*************** compute_output_file_names (void)
*** 450,462 ****
      spec_graph_file = stringappend (short_base_name, ".vcg");
  
    spec_verbose_file = stringappend (short_base_name, EXT_OUTPUT);
  
    attrsfile = stringappend (short_base_name, EXT_STYPE_H);
! #ifndef MSDOS
!   attrsfile = stringappend (attrsfile, header_extension);
! #endif /* MSDOS */
  
  }
  
  /*-----------------------------------------------------------------.
  | Open the input file.  Look for the skeletons.  Find the names of |
--- 450,460 ----
      spec_graph_file = stringappend (short_base_name, ".vcg");
  
    spec_verbose_file = stringappend (short_base_name, EXT_OUTPUT);
  
    attrsfile = stringappend (short_base_name, EXT_STYPE_H);
!   attrsfile = stringappend (attrsfile, EXT_TYPE (header_extension));
  
  }
  
  /*-----------------------------------------------------------------.
  | Open the input file.  Look for the skeletons.  Find the names of |
*************** output_files (void)
*** 521,532 ****
        char *temp_name;
  
        obstack_save (&attrs_obstack, attrsfile);
        obstack_free (&attrs_obstack, NULL);
        temp_name = stringappend (short_base_name, EXT_GUARD_C);
! #ifndef MSDOS
!       temp_name = stringappend (temp_name, src_extension);
! #endif /* MSDOS */
        obstack_save (&guard_obstack, temp_name);
        obstack_free (&guard_obstack, NULL);
      }
  }
--- 519,528 ----
        char *temp_name;
  
        obstack_save (&attrs_obstack, attrsfile);
        obstack_free (&attrs_obstack, NULL);
        temp_name = stringappend (short_base_name, EXT_GUARD_C);
!       temp_name = stringappend (temp_name, EXT_TYPE (src_extension));
        obstack_save (&guard_obstack, temp_name);
        obstack_free (&guard_obstack, NULL);
      }
  }
diff -acprNC5 bison-1.33.orig/src/getargs.c bison-1.33.djgpp/src/getargs.c
*** bison-1.33.orig/src/getargs.c	Wed Jan 23 13:12:16 2002
--- bison-1.33.djgpp/src/getargs.c	Wed Feb 20 15:48:00 2002
*************** warranty; not even for MERCHANTABILITY o
*** 158,171 ****
  
  /*----------------------.
  | Process the options.  |
  `----------------------*/
  
! /* Under DOS, there is no difference on the case.  This can be
     troublesome when looking for `.tab' etc.  */
  #ifdef MSDOS
! # define AS_FILE_NAME(File) (strlwr (File), (File))
  #else
  # define AS_FILE_NAME(File) (File)
  #endif
  
  void
--- 158,177 ----
  
  /*----------------------.
  | Process the options.  |
  `----------------------*/
  
! /* Under plain DOS, there is no difference on the case.  This can be
     troublesome when looking for `.tab' etc.  */
  #ifdef MSDOS
! # if defined (__DJGPP__)
! /* Windows 9X and successors are case sensitive. */
! #  define STRLWR(String)     ((String) ? (strlwr (String), (String)) : (String))
! #  define AS_FILE_NAME(File) ((pathconf ((File), _PC_NAME_MAX) > 12) ? (File) : STRLWR (File))
! # else
! #  define AS_FILE_NAME(File) (strlwr (File), (File))
! # endif
  #else
  # define AS_FILE_NAME(File) (File)
  #endif
  
  void
diff -acprNC5 bison-1.33.orig/src/system.h bison-1.33.djgpp/src/system.h
*** bison-1.33.orig/src/system.h	Mon Jan 21 12:12:28 2002
--- bison-1.33.djgpp/src/system.h	Wed Feb 20 15:45:32 2002
*************** do {								\
*** 237,247 ****
  #else
  # define	MAXSHORT	32767
  # define	MINSHORT	-32768
  #endif
  
! #if defined (MSDOS) && !defined (__GO32__)
  # define	BITS_PER_WORD	16
  # define MAXTABLE	16383
  #else
  # define	BITS_PER_WORD	32
  # define MAXTABLE	32767
--- 237,247 ----
  #else
  # define	MAXSHORT	32767
  # define	MINSHORT	-32768
  #endif
  
! #if defined (MSDOS) && !defined (__GO32__) && !defined (__DJGPP__)
  # define	BITS_PER_WORD	16
  # define MAXTABLE	16383
  #else
  # define	BITS_PER_WORD	32
  # define MAXTABLE	32767
*************** do {								\
*** 259,281 ****
    /* VMS. */
  # define EXT_TAB	"_tab"
  # define EXT_OUTPUT	".output"
  # define EXT_STYPE_H	"_stype"
  # define EXT_GUARD_C	"_guard"
  #else /* ! VMS */
  # ifdef MSDOS
!    /* MS DOS. */
! #  define EXT_TAB	"_tab"
! #  define EXT_OUTPUT	".out"
! #  define EXT_STYPE_H	".sth"
! #  define EXT_GUARD_C	".guc"
  # else /* ! MSDOS */
    /* Standard. */
  #  define EXT_TAB	".tab"
  #  define EXT_OUTPUT	".output"
  #  define EXT_STYPE_H	".stype"
  #  define EXT_GUARD_C	".guard"
  # endif /* ! MSDOS */
  #endif /* ! VMS */
  
  #if defined (VMS) & !defined (__VMS_POSIX)
  # ifndef BISON_SIMPLE
--- 259,293 ----
    /* VMS. */
  # define EXT_TAB	"_tab"
  # define EXT_OUTPUT	".output"
  # define EXT_STYPE_H	"_stype"
  # define EXT_GUARD_C	"_guard"
+ # define EXT_TYPE(ext)	(ext)
  #else /* ! VMS */
  # ifdef MSDOS
! #  if defined (__DJGPP__)
!     /* DJGPP */
! #   define EXT_TAB         	((pathconf (NULL, _PC_NAME_MAX) > 12) ? ".tab"    : "_tab")
! #   define EXT_OUTPUT      	((pathconf (NULL, _PC_NAME_MAX) > 12) ? ".output" : ".out")
! #   define EXT_STYPE_H     	((pathconf (NULL, _PC_NAME_MAX) > 12) ? ".stype"  : ".sth")
! #   define EXT_GUARD_C     	((pathconf (NULL, _PC_NAME_MAX) > 12) ? ".guard"  : ".guc")
! #   define EXT_TYPE(ext)	((pathconf (NULL, _PC_NAME_MAX) > 12) ? (ext)     : "")
! #  else /* ! __DJGPP__ */
!     /* MS DOS. */
! #   define EXT_TAB		"_tab"
! #   define EXT_OUTPUT		".out"
! #   define EXT_STYPE_H		".sth"
! #   define EXT_GUARD_C		".guc"
! #   define EXT_TYPE(ext)	""
! #  endif
  # else /* ! MSDOS */
    /* Standard. */
  #  define EXT_TAB	".tab"
  #  define EXT_OUTPUT	".output"
  #  define EXT_STYPE_H	".stype"
  #  define EXT_GUARD_C	".guard"
+ #  define EXT_TYPE(ext)	(ext)
  # endif /* ! MSDOS */
  #endif /* ! VMS */
  
  #if defined (VMS) & !defined (__VMS_POSIX)
  # ifndef BISON_SIMPLE
