unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
blob 00caf7e31c35039658ddf0df901b94fe1179e75e 3305 bytes (raw)
name: src/w32common.h 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
 
/* Common functions for Microsoft Windows builds of Emacs
   Copyright (C) 2012-2021 Free Software Foundation, Inc.

This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.

*/

#ifndef W32COMMON_H
#define W32COMMON_H

#include <windows.h>

#define ROUND_UP(p, align)   (((DWORD_PTR)(p) + (align)-1) & ~((DWORD_PTR)(align)-1))
#define ROUND_DOWN(p, align) ((DWORD_PTR)(p) & ~((DWORD_PTR)(align)-1))

#define get_page_size()			sysinfo_cache.dwPageSize
#define get_allocation_unit()		sysinfo_cache.dwAllocationGranularity
#define get_processor_type()		sysinfo_cache.dwProcessorType
#define get_w32_major_version()  	w32_major_version
#define get_w32_minor_version()  	w32_minor_version

extern SYSTEM_INFO    sysinfo_cache;
extern OSVERSIONINFO  osinfo_cache;
extern DWORD_PTR      syspage_mask;

extern int    	      w32_major_version;
extern int    	      w32_minor_version;
extern int    	      w32_build_number;

#ifndef OS_NT
  #define OS_NT 1
#endif

#ifndef OS_WIN95ORGREATER
  #define OS_WIN95ORGREATER 2
#endif

extern int os_subtype;

/* Cache system info, e.g., the NT page size.  */
extern void cache_system_info (void);

#ifdef WINDOWSNT
/* Return a static buffer with the MS-Windows version string.  */
extern char * w32_version_string (void);
#endif

typedef void (* VOIDFNPTR) (void);

/* Load a function address from a DLL.  Cast the result via VOIDFNPTR
   to pacify -Wcast-function-type in GCC 8.1.  The return value must
   be cast to the correct function pointer type.  */
INLINE VOIDFNPTR get_proc_addr (HINSTANCE, LPCSTR);
INLINE VOIDFNPTR
get_proc_addr (HINSTANCE handle, LPCSTR fname)
{
  return (VOIDFNPTR) GetProcAddress (handle, fname);
}

/* Define a function that will be loaded from a DLL.  The variable
   arguments should contain the argument list for the function, and
   optionally be followed by function attributes.  For example:
   DEF_DLL_FN (void, png_longjmp, (png_structp, int) PNG_NORETURN);
  */
#define DEF_DLL_FN(type, func, ...)                     \
  typedef type (CDECL *W32_PFN_##func) __VA_ARGS__;     \
  static W32_PFN_##func fn_##func

/* Load a function from the DLL.  */
#define LOAD_DLL_FN(lib, func)						\
  do									\
    {									\
      fn_##func = (W32_PFN_##func) get_proc_addr (lib, #func);		\
      if (!fn_##func)							\
	return false;							\
    }									\
  while (false)

/* Load a function from the DLL, and don't fail if it does not exist.  */
#define LOAD_DLL_FN_OPT(lib, func)                                      \
  do									\
    {									\
      fn_##func = (W32_PFN_##func) get_proc_addr (lib, #func);		\
    }									\
  while (false)

#ifdef HAVE_HARFBUZZ
extern bool hbfont_init_w32_funcs (HMODULE);
#endif

#endif /* W32COMMON_H */

debug log:

solving 00caf7e31c ...
found 00caf7e31c in https://yhetil.org/emacs-bugs/RxCtHCQesKsK0kOcsDNmyPWncHlbl8it4xJxGJqmRJ5as_97_3oG7EiAZEtnBKiJInleI2KJz7yPh1gQ_CU6xMqJt0OpqRPL_ShNnWCw-J4=@etehtsea.me/
found 53b3376f7c in https://yhetil.org/emacs-bugs/RxCtHCQesKsK0kOcsDNmyPWncHlbl8it4xJxGJqmRJ5as_97_3oG7EiAZEtnBKiJInleI2KJz7yPh1gQ_CU6xMqJt0OpqRPL_ShNnWCw-J4=@etehtsea.me/
found cbe05c5d8d in https://git.savannah.gnu.org/cgit/emacs.git
preparing index
index prepared:
100644 cbe05c5d8d196a5cab53ee4ab191bca4762b8130	src/w32common.h

applying [1/2] https://yhetil.org/emacs-bugs/RxCtHCQesKsK0kOcsDNmyPWncHlbl8it4xJxGJqmRJ5as_97_3oG7EiAZEtnBKiJInleI2KJz7yPh1gQ_CU6xMqJt0OpqRPL_ShNnWCw-J4=@etehtsea.me/
diff --git a/src/w32common.h b/src/w32common.h
index cbe05c5d8d..53b3376f7c 100644


applying [2/2] https://yhetil.org/emacs-bugs/RxCtHCQesKsK0kOcsDNmyPWncHlbl8it4xJxGJqmRJ5as_97_3oG7EiAZEtnBKiJInleI2KJz7yPh1gQ_CU6xMqJt0OpqRPL_ShNnWCw-J4=@etehtsea.me/
diff --git a/src/w32common.h b/src/w32common.h
index 53b3376f7c..00caf7e31c 100644

Checking patch src/w32common.h...
Applied patch src/w32common.h cleanly.
Checking patch src/w32common.h...
Applied patch src/w32common.h cleanly.

index at:
100644 00caf7e31c35039658ddf0df901b94fe1179e75e	src/w32common.h

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).