(mainly in fhandler*) start fixing gcc 4.7.2 mismatch between regparm definitions and declarations. * gendef: Define some functions to take @ declaration to accommodate _regN defines which use __stdcall. * gentls_offsets: Define __regN macros as empty. * autoload.cc (wsock_init): Remove unneeded regparm attribute. * winsup.h (__reg1): Define. (__reg2): Define. (__reg3): Define. * advapi32.cc (DuplicateTokenEx): Coerce some initializers to avoid warnings from gcc 4.7.2. * exceptions.cc (status_info): Declare struct to use NTSTATUS. (cygwin_exception::dump_exception): Coerce e->ExceptionCode to NTSTATUS. * fhandler_clipboard.cc (cygnativeformat): Redefine as UINT to avoid gcc 4.7.2 warnings. (fhandler_dev_clipboard::read): Ditto.
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/* winf.h
 | 
						|
 | 
						|
   Copyright 2006, 2007, 2009, 2011, 2013 Red Hat, Inc.
 | 
						|
 | 
						|
This software is a copyrighted work licensed under the terms of the
 | 
						|
Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
 | 
						|
details. */
 | 
						|
 | 
						|
#ifndef _WINF_H
 | 
						|
#define _WINF_H
 | 
						|
 | 
						|
/* Hack for Cygwin processes.  If the Windows command line length gets slightly
 | 
						|
   bigger than this value, the stack position is suddenly moved up by 64K for
 | 
						|
   no apparent reason, which results in subsequent forks failing.  Since Cygwin
 | 
						|
   processes get the full command line as argv array anyway, this only affects
 | 
						|
   the maximum command line length of Cygwin applications which nonsensically
 | 
						|
   have a WinMain instead of a main entry point or which use GetCommandLine. */
 | 
						|
#define MAXCYGWINCMDLEN 30000
 | 
						|
 | 
						|
#define MAXWINCMDLEN 32767
 | 
						|
#define LINE_BUF_CHUNK (MAX_PATH * 2)
 | 
						|
 | 
						|
class av
 | 
						|
{
 | 
						|
  char **argv;
 | 
						|
  int calloced;
 | 
						|
 public:
 | 
						|
  int argc;
 | 
						|
  bool win16_exe;
 | 
						|
  av (): argv (NULL) {}
 | 
						|
  av (int ac_in, const char * const *av_in) : calloced (0), argc (ac_in), win16_exe (false)
 | 
						|
  {
 | 
						|
    argv = (char **) cmalloc_abort (HEAP_1_ARGV, (argc + 5) * sizeof (char *));
 | 
						|
    memcpy (argv, av_in, (argc + 1) * sizeof (char *));
 | 
						|
  }
 | 
						|
  void *operator new (size_t, void *p) __attribute__ ((nothrow)) {return p;}
 | 
						|
  void set (int ac_in, const char * const *av_in) {new (this) av (ac_in, av_in);}
 | 
						|
  ~av ()
 | 
						|
  {
 | 
						|
    if (argv)
 | 
						|
      {
 | 
						|
	for (int i = 0; i < calloced; i++)
 | 
						|
	  if (argv[i])
 | 
						|
	    cfree (argv[i]);
 | 
						|
	cfree (argv);
 | 
						|
      }
 | 
						|
  }
 | 
						|
  int unshift (const char *what, int conv = 0);
 | 
						|
  operator char **() {return argv;}
 | 
						|
  void all_calloced () {calloced = argc;}
 | 
						|
  void replace0_maybe (const char *arg0)
 | 
						|
  {
 | 
						|
    /* Note: Assumes that argv array has not yet been "unshifted" */
 | 
						|
    if (!calloced)
 | 
						|
      {
 | 
						|
	argv[0] = cstrdup1 (arg0);
 | 
						|
	calloced = true;
 | 
						|
      }
 | 
						|
  }
 | 
						|
  void dup_maybe (int i)
 | 
						|
  {
 | 
						|
    if (i >= calloced)
 | 
						|
      argv[i] = cstrdup1 (argv[i]);
 | 
						|
  }
 | 
						|
  void dup_all ()
 | 
						|
  {
 | 
						|
    for (int i = calloced; i < argc; i++)
 | 
						|
      argv[i] = cstrdup1 (argv[i]);
 | 
						|
  }
 | 
						|
  int fixup (const char *, path_conv&, const char *, bool);
 | 
						|
};
 | 
						|
 | 
						|
class linebuf
 | 
						|
{
 | 
						|
 public:
 | 
						|
  size_t ix;
 | 
						|
  char *buf;
 | 
						|
  size_t alloced;
 | 
						|
  linebuf () : ix (0), buf (NULL), alloced (0) {}
 | 
						|
  ~linebuf () {if (buf) free (buf);}
 | 
						|
  void __reg3 add (const char *, int);
 | 
						|
  void add (const char *what) {add (what, strlen (what));}
 | 
						|
  void prepend (const char *, int);
 | 
						|
  void __reg2 finish (bool);
 | 
						|
  bool __reg3 fromargv(av&, const char *, bool);;
 | 
						|
  operator char *() {return buf;}
 | 
						|
};
 | 
						|
 | 
						|
#endif /*_WINF_H*/
 |