Replaced mongoose code with civetweb (https://github.com/bel2125/civetweb)
Refreshed apitrace, GLEW, and FreeGLUT
This commit is contained in:
parent
07a4ea3d8c
commit
fa2f167e39
87 changed files with 11506 additions and 8675 deletions
|
|
@ -42,10 +42,10 @@ endif
|
|||
|
||||
REGAL.SRCS := $(REGAL.CXX)
|
||||
|
||||
# Disable mongoose and Regal HTTP for NaCl build
|
||||
# Disable civetweb and Regal HTTP for NaCl build
|
||||
|
||||
ifeq ($(filter nacl% emscripten%,$(SYSTEM)),)
|
||||
REGAL.SRCS += src/mongoose/mongoose.c
|
||||
REGAL.SRCS += src/civetweb/civetweb.c
|
||||
endif
|
||||
|
||||
ifeq ($(filter -DREGAL_NO_MD5%,$(CFLAGS)),)
|
||||
|
|
@ -195,10 +195,8 @@ ifneq ($(filter linux%,$(SYSTEM)),)
|
|||
REGAL.SONAME := lib$(NAME).so.$(SO_MAJOR)
|
||||
REGAL.DEVLNK := lib$(NAME).so
|
||||
REGAL.SHARED := lib$(NAME).so.$(SO_VERSION)
|
||||
ifeq ($(filter linux-arm,$(SYSTEM)),)
|
||||
REGAL.LDFLAGS.SO := $(LDFLAGS.SO) $(LDFLAGS.DYNAMIC) -Wl,-soname=$(REGAL.SONAME)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(filter darwin%,$(SYSTEM)),)
|
||||
REGAL.SONAME := lib$(NAME).$(SO_MAJOR).dylib
|
||||
|
|
@ -282,11 +280,11 @@ tmp/$(SYSTEM)/regal/shared/%.o: src/regal/%.cpp $(REGAL.HEADERS)
|
|||
@mkdir -p $(dir $@)
|
||||
$(LOG_CXX)$(CCACHE) $(CXX) $(REGAL.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(REGAL.INCLUDE) -o $@ -c $<
|
||||
|
||||
tmp/$(SYSTEM)/regal/static/%.o: src/mongoose/%.c $(REGAL.HEADERS)
|
||||
tmp/$(SYSTEM)/regal/static/%.o: src/civetweb/%.c $(REGAL.HEADERS)
|
||||
@mkdir -p $(dir $@)
|
||||
$(LOG_CC)$(CCACHE) $(CC) $(REGAL.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(REGAL.INCLUDE) -o $@ -c $<
|
||||
|
||||
tmp/$(SYSTEM)/regal/shared/%.o: src/mongoose/%.c $(REGAL.HEADERS)
|
||||
tmp/$(SYSTEM)/regal/shared/%.o: src/civetweb/%.c $(REGAL.HEADERS)
|
||||
@mkdir -p $(dir $@)
|
||||
$(LOG_CC)$(CCACHE) $(CC) $(REGAL.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(REGAL.INCLUDE) -o $@ -c $<
|
||||
|
||||
|
|
|
|||
|
|
@ -334,10 +334,12 @@ Linux
|
|||
|
||||
* 32-bit:
|
||||
|
||||
``$ sudo yum install zlib-devel libpng-devel libXmu-devel libXi-devel``
|
||||
``$ sudo yum install gcc-c++ zlib-devel libpng-devel libXmu-devel libXi-devel``
|
||||
|
||||
* 64-bit
|
||||
|
||||
``$ sudo yum install gcc-c++``
|
||||
|
||||
``$ sudo yum install zlib-devel.i686 libpng-devel.i686``
|
||||
|
||||
``$ sudo yum install zlib-devel.x86_64 libpng-devel.x86_64``
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ apitrace_src_files := $(patsubst $(LOCAL_PATH)/%,%,$(apitrace_src_files))
|
|||
apitrace_c_includes := $(regal_path)/include $(regal_path)/src/apitrace/common $(regal_path)/src/apitrace/gen/dispatch $(regal_path)/src/apitrace/dispatch $(regal_path)/src/apitrace/helpers $(regal_path)/src/apitrace/wrappers $(regal_path)/src/apitrace
|
||||
apitrace_c_includes += $(regal_path)/src/zlib/include $(regal_path)/src/zlib/src $(regal_path)/src/snappy
|
||||
apitrace_c_includes += $(regal_path)/src/apitrace/thirdparty/khronos
|
||||
apitrace_c_includes += $(regal_path)/src/regal $(regal_path)/src/mongoose $(regal_path)/src/squish
|
||||
apitrace_c_includes += $(regal_path)/src/regal $(regal_path)/src/civetweb $(regal_path)/src/squish
|
||||
apitrace_c_includes := $(patsubst $(LOCAL_PATH)/../%,%,$(apitrace_c_includes))
|
||||
|
||||
apitrace_export_c_includes := $(regal_path)/include
|
||||
|
|
@ -79,10 +79,10 @@ glslopt_c_includes := $(patsubst -I%,$(regal_path)/%,$(GLSLOPT.INCLUDE))
|
|||
#
|
||||
|
||||
regal_src_files := $(patsubst %,$(regal_path)/%,$(REGAL.CXX))
|
||||
regal_src_files += $(regal_path)/src/mongoose/mongoose.c $(regal_path)/src/md5/src/md5.c $(regal_path)/src/jsonsl/jsonsl.c
|
||||
regal_src_files += $(regal_path)/src/civetweb/civetweb.c $(regal_path)/src/md5/src/md5.c $(regal_path)/src/jsonsl/jsonsl.c
|
||||
regal_src_files := $(patsubst $(LOCAL_PATH)/%,%,$(regal_src_files))
|
||||
|
||||
regal_c_includes := $(regal_path)/include $(regal_path)/src/regal $(regal_path)/src/boost $(regal_path)/src/mongoose $(regal_path)/src/md5/include $(regal_path)/src/lookup3 $(regal_path)/src/jsonsl
|
||||
regal_c_includes := $(regal_path)/include $(regal_path)/src/regal $(regal_path)/src/boost $(regal_path)/src/civetweb $(regal_path)/src/md5/include $(regal_path)/src/lookup3 $(regal_path)/src/jsonsl
|
||||
regal_c_includes := $(patsubst $(LOCAL_PATH)/../%,%,$(regal_c_includes))
|
||||
|
||||
regal_export_c_includes := $(regal_path)/include
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
43FC5FA215C4619B00D0177C /* RegalUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43FC5F7515C4619B00D0177C /* RegalUtil.cpp */; };
|
||||
43FC5FA315C4619B00D0177C /* RegalUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 43FC5F7615C4619B00D0177C /* RegalUtil.h */; };
|
||||
43FC5FA415C4619B00D0177C /* RegalVao.h in Headers */ = {isa = PBXBuildFile; fileRef = 43FC5F7715C4619B00D0177C /* RegalVao.h */; };
|
||||
43FC5FA715C461AC00D0177C /* mongoose.c in Sources */ = {isa = PBXBuildFile; fileRef = 43FC5FA615C461AC00D0177C /* mongoose.c */; };
|
||||
43FC5FA715C461AC00D0177C /* civetweb.c in Sources */ = {isa = PBXBuildFile; fileRef = 43FC5FA615C461AC00D0177C /* civetweb.c */; };
|
||||
754D3C9517CFFD7200E4C0E0 /* RegalEmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 754D3C9417CFFD7200E4C0E0 /* RegalEmu.cpp */; };
|
||||
75694C8E17EB913B00B8AD9D /* RegalQuads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 75694C8C17EB913B00B8AD9D /* RegalQuads.cpp */; };
|
||||
75694C8F17EB913B00B8AD9D /* RegalQuads.h in Headers */ = {isa = PBXBuildFile; fileRef = 75694C8D17EB913B00B8AD9D /* RegalQuads.h */; };
|
||||
|
|
@ -236,7 +236,7 @@
|
|||
43FC5F7515C4619B00D0177C /* RegalUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalUtil.cpp; path = ../../../src/regal/RegalUtil.cpp; sourceTree = "<group>"; };
|
||||
43FC5F7615C4619B00D0177C /* RegalUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalUtil.h; path = ../../../src/regal/RegalUtil.h; sourceTree = "<group>"; };
|
||||
43FC5F7715C4619B00D0177C /* RegalVao.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalVao.h; path = ../../../src/regal/RegalVao.h; sourceTree = "<group>"; };
|
||||
43FC5FA615C461AC00D0177C /* mongoose.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mongoose.c; path = ../../../src/mongoose/mongoose.c; sourceTree = "<group>"; };
|
||||
43FC5FA615C461AC00D0177C /* civetweb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = civetweb.c; path = ../../../src/civetweb/civetweb.c; sourceTree = "<group>"; };
|
||||
754D3C9417CFFD7200E4C0E0 /* RegalEmu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalEmu.cpp; path = ../../../src/regal/RegalEmu.cpp; sourceTree = "<group>"; };
|
||||
75694C8C17EB913B00B8AD9D /* RegalQuads.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalQuads.cpp; path = ../../../src/regal/RegalQuads.cpp; sourceTree = "<group>"; };
|
||||
75694C8D17EB913B00B8AD9D /* RegalQuads.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalQuads.h; path = ../../../src/regal/RegalQuads.h; sourceTree = "<group>"; };
|
||||
|
|
@ -405,7 +405,7 @@
|
|||
BCDF6697178F16E100EE9569 /* apitrace */,
|
||||
43FC5F4B15C4619B00D0177C /* linear.h */,
|
||||
BC020956160D1C65003FAB99 /* md5 */,
|
||||
43FC5FA515C461A100D0177C /* mongoose */,
|
||||
43FC5FA515C461A100D0177C /* civetweb */,
|
||||
43FC5F4C15C4619B00D0177C /* Regal.cpp */,
|
||||
BC59F9CA174809EE004BC2AC /* RegalBaseVertex.h */,
|
||||
43FC5F4D15C4619B00D0177C /* RegalBin.h */,
|
||||
|
|
@ -524,12 +524,12 @@
|
|||
name = Regal;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
43FC5FA515C461A100D0177C /* mongoose */ = {
|
||||
43FC5FA515C461A100D0177C /* civetweb */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43FC5FA615C461AC00D0177C /* mongoose.c */,
|
||||
43FC5FA615C461AC00D0177C /* civetweb.c */,
|
||||
);
|
||||
name = mongoose;
|
||||
name = civetweb;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BC020956160D1C65003FAB99 /* md5 */ = {
|
||||
|
|
@ -790,7 +790,7 @@
|
|||
43FC5F9715C4619B00D0177C /* RegalLookup.cpp in Sources */,
|
||||
43FC5FA015C4619B00D0177C /* RegalToken.cpp in Sources */,
|
||||
43FC5FA215C4619B00D0177C /* RegalUtil.cpp in Sources */,
|
||||
43FC5FA715C461AC00D0177C /* mongoose.c in Sources */,
|
||||
43FC5FA715C461AC00D0177C /* civetweb.c in Sources */,
|
||||
4366EEEF15C9B54E00211205 /* RegalFavicon.cpp in Sources */,
|
||||
4366EEF115C9B54E00211205 /* RegalMac.cpp in Sources */,
|
||||
BC921A5E15D5624600E52C91 /* RegalDispatchMissing.cpp in Sources */,
|
||||
|
|
@ -925,7 +925,7 @@
|
|||
../../../include,
|
||||
../../../src/boost,
|
||||
../../../src/md5/include,
|
||||
../../../src/mongoose,
|
||||
../../../src/civetweb,
|
||||
../../../src/lookup3,
|
||||
../../../src/apitrace/common,
|
||||
../../../src/apitrace/dispatch,
|
||||
|
|
@ -957,7 +957,7 @@
|
|||
../../../include,
|
||||
../../../src/boost,
|
||||
../../../src/md5/include,
|
||||
../../../src/mongoose,
|
||||
../../../src/civetweb,
|
||||
../../../src/lookup3,
|
||||
../../../src/apitrace/common,
|
||||
../../../src/apitrace/dispatch,
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@
|
|||
4359147D18293B32002CB92C /* libapitrace.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359144B18293A5C002CB92C /* libapitrace.a */; };
|
||||
4359147E18293B32002CB92C /* libjsonsl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145118293A68002CB92C /* libjsonsl.a */; };
|
||||
4359147F18293B32002CB92C /* libmd5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145718293A74002CB92C /* libmd5.a */; };
|
||||
4359148018293B32002CB92C /* libmongoose.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145D18293A7D002CB92C /* libmongoose.a */; };
|
||||
4359148118293B32002CB92C /* libpcre.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359146318293A8B002CB92C /* libpcre.a */; };
|
||||
4359148218293B32002CB92C /* libpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359146918293A94002CB92C /* libpng.a */; };
|
||||
4359148318293B32002CB92C /* libsnappy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359146F18293A9C002CB92C /* libsnappy.a */; };
|
||||
|
|
@ -153,13 +152,6 @@
|
|||
remoteGlobalIDString = 4336678117C56DFD00D45AD9;
|
||||
remoteInfo = md5;
|
||||
};
|
||||
4359145C18293A7D002CB92C /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4359145818293A7C002CB92C /* mongoose.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 4336676E17C56DC700D45AD9;
|
||||
remoteInfo = mongoose;
|
||||
};
|
||||
4359146218293A8B002CB92C /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4359145E18293A8A002CB92C /* pcre.xcodeproj */;
|
||||
|
|
@ -209,7 +201,6 @@
|
|||
4359144618293A5B002CB92C /* apitrace.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = apitrace.xcodeproj; path = ../apitrace/apitrace.xcodeproj; sourceTree = "<group>"; };
|
||||
4359144C18293A68002CB92C /* jsonsl.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = jsonsl.xcodeproj; path = ../jsonsl/jsonsl.xcodeproj; sourceTree = "<group>"; };
|
||||
4359145218293A73002CB92C /* md5.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = md5.xcodeproj; path = ../md5/md5.xcodeproj; sourceTree = "<group>"; };
|
||||
4359145818293A7C002CB92C /* mongoose.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = mongoose.xcodeproj; path = ../mongoose/mongoose.xcodeproj; sourceTree = "<group>"; };
|
||||
4359145E18293A8A002CB92C /* pcre.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = pcre.xcodeproj; path = ../pcre/pcre.xcodeproj; sourceTree = "<group>"; };
|
||||
4359146418293A93002CB92C /* png.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = png.xcodeproj; path = ../png/png.xcodeproj; sourceTree = "<group>"; };
|
||||
4359146A18293A9C002CB92C /* snappy.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = snappy.xcodeproj; path = ../snappy/snappy.xcodeproj; sourceTree = "<group>"; };
|
||||
|
|
@ -333,7 +324,6 @@
|
|||
4359147D18293B32002CB92C /* libapitrace.a in Frameworks */,
|
||||
4359147E18293B32002CB92C /* libjsonsl.a in Frameworks */,
|
||||
4359147F18293B32002CB92C /* libmd5.a in Frameworks */,
|
||||
4359148018293B32002CB92C /* libmongoose.a in Frameworks */,
|
||||
4359148118293B32002CB92C /* libpcre.a in Frameworks */,
|
||||
4359148218293B32002CB92C /* libpng.a in Frameworks */,
|
||||
4359148318293B32002CB92C /* libsnappy.a in Frameworks */,
|
||||
|
|
@ -369,14 +359,6 @@
|
|||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4359145918293A7C002CB92C /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4359145D18293A7D002CB92C /* libmongoose.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4359145F18293A8A002CB92C /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -423,7 +405,6 @@
|
|||
4359144618293A5B002CB92C /* apitrace.xcodeproj */,
|
||||
4359144C18293A68002CB92C /* jsonsl.xcodeproj */,
|
||||
4359145218293A73002CB92C /* md5.xcodeproj */,
|
||||
4359145818293A7C002CB92C /* mongoose.xcodeproj */,
|
||||
4359145E18293A8A002CB92C /* pcre.xcodeproj */,
|
||||
4359146418293A93002CB92C /* png.xcodeproj */,
|
||||
4359146A18293A9C002CB92C /* snappy.xcodeproj */,
|
||||
|
|
@ -696,10 +677,6 @@
|
|||
ProductGroup = 4359145318293A73002CB92C /* Products */;
|
||||
ProjectRef = 4359145218293A73002CB92C /* md5.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 4359145918293A7C002CB92C /* Products */;
|
||||
ProjectRef = 4359145818293A7C002CB92C /* mongoose.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 4359145F18293A8A002CB92C /* Products */;
|
||||
ProjectRef = 4359145E18293A8A002CB92C /* pcre.xcodeproj */;
|
||||
|
|
@ -750,13 +727,6 @@
|
|||
remoteRef = 4359145618293A74002CB92C /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
4359145D18293A7D002CB92C /* libmongoose.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libmongoose.a;
|
||||
remoteRef = 4359145C18293A7D002CB92C /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
4359146318293A8B002CB92C /* libpcre.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
|
|
@ -885,7 +855,7 @@
|
|||
HEADER_SEARCH_PATHS = (
|
||||
../../../include,
|
||||
../../../src/boost,
|
||||
../../../src/mongoose,
|
||||
../../../src/civetweb,
|
||||
../../../src/lookup3,
|
||||
../../../src/jsonsl,
|
||||
../../../src/snappy,
|
||||
|
|
@ -899,8 +869,8 @@
|
|||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx;
|
||||
USER_HEADER_SEARCH_PATHS = "../../../src/mongoose ../../../src/md5/include";
|
||||
SDKROOT = "";
|
||||
USER_HEADER_SEARCH_PATHS = "../../../src/civetweb ../../../src/md5/include";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
|
|
@ -929,7 +899,7 @@
|
|||
HEADER_SEARCH_PATHS = (
|
||||
../../../include,
|
||||
../../../src/boost,
|
||||
../../../src/mongoose,
|
||||
../../../src/civetweb,
|
||||
../../../src/lookup3,
|
||||
../../../src/jsonsl,
|
||||
../../../src/snappy,
|
||||
|
|
@ -942,8 +912,8 @@
|
|||
../../../src/zlib/src,
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
SDKROOT = macosx;
|
||||
USER_HEADER_SEARCH_PATHS = "../../../src/mongoose ../../../src/md5/include";
|
||||
SDKROOT = "";
|
||||
USER_HEADER_SEARCH_PATHS = "../../../src/civetweb ../../../src/md5/include";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -367,9 +367,9 @@
|
|||
../../../src/apitrace/thirdparty/khronos,
|
||||
../../../src/regal,
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = "";
|
||||
SDKROOT = macosx10.7;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
|
|
@ -410,8 +410,8 @@
|
|||
../../../src/apitrace/thirdparty/khronos,
|
||||
../../../src/regal,
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
SDKROOT = "";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
SDKROOT = macosx10.7;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,218 +0,0 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
4336677717C56DE400D45AD9 /* mongoose.c in Sources */ = {isa = PBXBuildFile; fileRef = 4336677617C56DE400D45AD9 /* mongoose.c */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
4336676E17C56DC700D45AD9 /* libmongoose.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmongoose.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4336677617C56DE400D45AD9 /* mongoose.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mongoose.c; path = ../../../src/mongoose/mongoose.c; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
4336676B17C56DC700D45AD9 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
4336676517C56DC600D45AD9 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4336677517C56DCD00D45AD9 /* src */,
|
||||
4336676F17C56DC700D45AD9 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4336676F17C56DC700D45AD9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4336676E17C56DC700D45AD9 /* libmongoose.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4336677517C56DCD00D45AD9 /* src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4336677617C56DE400D45AD9 /* mongoose.c */,
|
||||
);
|
||||
name = src;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
4336676C17C56DC700D45AD9 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
4336676D17C56DC700D45AD9 /* mongoose */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4336677217C56DC700D45AD9 /* Build configuration list for PBXNativeTarget "mongoose" */;
|
||||
buildPhases = (
|
||||
4336676A17C56DC700D45AD9 /* Sources */,
|
||||
4336676B17C56DC700D45AD9 /* Frameworks */,
|
||||
4336676C17C56DC700D45AD9 /* Headers */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = mongoose;
|
||||
productName = mongoose;
|
||||
productReference = 4336676E17C56DC700D45AD9 /* libmongoose.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
4336676617C56DC600D45AD9 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0460;
|
||||
ORGANIZATIONNAME = "Cass Everitt";
|
||||
};
|
||||
buildConfigurationList = 4336676917C56DC600D45AD9 /* Build configuration list for PBXProject "mongoose" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 4336676517C56DC600D45AD9;
|
||||
productRefGroup = 4336676F17C56DC700D45AD9 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
4336676D17C56DC700D45AD9 /* mongoose */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
4336676A17C56DC700D45AD9 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4336677717C56DE400D45AD9 /* mongoose.c in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
4336677017C56DC700D45AD9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4336677117C56DC700D45AD9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
SDKROOT = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
4336677317C56DC700D45AD9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
EXECUTABLE_PREFIX = lib;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4336677417C56DC700D45AD9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
EXECUTABLE_PREFIX = lib;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
4336676917C56DC600D45AD9 /* Build configuration list for PBXProject "mongoose" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4336677017C56DC700D45AD9 /* Debug */,
|
||||
4336677117C56DC700D45AD9 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
4336677217C56DC700D45AD9 /* Build configuration list for PBXNativeTarget "mongoose" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4336677317C56DC700D45AD9 /* Debug */,
|
||||
4336677417C56DC700D45AD9 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 4336676617C56DC600D45AD9 /* Project object */;
|
||||
}
|
||||
|
|
@ -25,7 +25,7 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regalglewlib", "Regalglewli
|
|||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "mongooselib", "mongooselib.vcxproj", "{256E64B8-F766-061C-45F8-25B51B7CA24E}"
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "civetweblib", "civetweblib.vcxproj", "{256E64B8-F766-061C-45F8-25B51B7CA24E}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Regalmlib", "Regalmlib.vcxp
|
|||
{12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mongooselib", "mongooselib.vcxproj", "{256E64B8-F766-061C-45F8-25B51B7CA24E}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "civetweblib", "civetweblib.vcxproj", "{256E64B8-F766-061C-45F8-25B51B7CA24E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "md5lib", "md5lib.vcxproj", "{EF516F6A-1965-7089-C2CA-65778D394F08}"
|
||||
EndProject
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -88,7 +88,7 @@
|
|||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Release\Win32\regal32.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -110,7 +110,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -126,7 +126,7 @@
|
|||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Debug\Win32\regal32.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -148,13 +148,13 @@
|
|||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|PPAPI'">
|
||||
<Link>
|
||||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;jsonsllib.lib;mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;kernel32.lib;winspool.lib;comdlg32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib</AdditionalDependencies>
|
||||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;jsonsllib.lib;civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;kernel32.lib;winspool.lib;comdlg32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>../../../../src/regal/RegalPPAPI.def</ModuleDefinitionFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../../src/jsonsl;../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/jsonsl;../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<PreprocessorDefinitions>PPAPI;REGAL_NO_TLS;REGAL_WIN_TLS=0;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
|
|
@ -163,13 +163,13 @@
|
|||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|PPAPI'">
|
||||
<Link>
|
||||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;jsonsllib.lib;mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;kernel32.lib;winspool.lib;comdlg32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib</AdditionalDependencies>
|
||||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;jsonsllib.lib;civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;kernel32.lib;winspool.lib;comdlg32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>../../../../src/regal/RegalPPAPI.def</ModuleDefinitionFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../../src/jsonsl;../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/jsonsl;../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<PreprocessorDefinitions>PPAPI;REGAL_NO_TLS=1;REGAL_WIN_TLS=0;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;JSONSL_STATE_GENERIC=1;DNDEBUG;REGAL_DECL_EXPORT=1;REGAL_LOG=0;REGAL_LOG_ALL=0;REGAL_LOG_ONCE=0;REGAL_LOG_JSON=0;REGAL_NO_HTTP=1;REGAL_NO_ASSERT=1;REGAL_NO_PNG=1;REGAL_ERROR=0;REGAL_DEBUG=0;REGAL_CACHE=0;REGAL_EMULATION=1;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -111,7 +111,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -153,7 +153,7 @@
|
|||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;</AdditionalDependencies>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
|
|
@ -166,7 +166,7 @@
|
|||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;</AdditionalDependencies>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_NAMESPACE;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -82,7 +82,7 @@
|
|||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Release\Win32\regalm32.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_NAMESPACE;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -120,7 +120,7 @@
|
|||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Debug\Win32\regalm32.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -142,12 +142,12 @@
|
|||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|PPAPI'">
|
||||
<Link>
|
||||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ppapi_cpp.lib;ppapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;</AdditionalDependencies>
|
||||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ppapi_cpp.lib;ppapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>../../../../src/regal/RegalPPAPI.def</ModuleDefinitionFile>
|
||||
<AdditionalLibraryDirectories>win\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<PreprocessorDefinitions>PPAPI;REGAL_NO_TLS;REGAL_WIN_TLS=0;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
|
|
@ -155,12 +155,12 @@
|
|||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|PPAPI'">
|
||||
<Link>
|
||||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;</AdditionalDependencies>
|
||||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>../../../../src/regal/RegalPPAPI.def</ModuleDefinitionFile>
|
||||
<AdditionalLibraryDirectories>win\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<PreprocessorDefinitions>PPAPI;REGAL_NO_TLS;REGAL_WIN_TLS=0;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_NAMESPACE;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -111,7 +111,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_NAMESPACE;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -153,7 +153,7 @@
|
|||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;</AdditionalDependencies>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<PreprocessorDefinitions>PPAPI;REGAL_NO_TLS;REGAL_WIN_TLS=0;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
|
|
@ -164,7 +164,7 @@
|
|||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;</AdditionalDependencies>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<PreprocessorDefinitions>PPAPI;REGAL_NO_TLS;REGAL_WIN_TLS=0;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_POINTER=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -90,7 +90,7 @@
|
|||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Release\Win32\regalp.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -113,7 +113,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_POINTER=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -130,7 +130,7 @@
|
|||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Release\x64\regalp.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -151,7 +151,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_POINTER=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -167,7 +167,7 @@
|
|||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Debug\Win32\regalp.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -190,7 +190,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_POINTER=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -206,7 +206,7 @@
|
|||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Debug\x64\regalp.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>mongooselib</ProjectName>
|
||||
<ProjectName>civetweblib</ProjectName>
|
||||
<ProjectGuid>{256E64B8-F766-061C-45F8-25B51B7CA24E}</ProjectGuid>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
|
|
@ -52,9 +52,9 @@
|
|||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\Win32\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\Win32\mongooselib\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\Win32\civetweblib\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\Win32\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\Win32\mongooselib\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\Win32\civetweblib\</IntDir>
|
||||
<NaClAddInVersion Condition="'$(Configuration)|$(Platform)'=='Debug|PPAPI'">1</NaClAddInVersion>
|
||||
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|PPAPI'">$(VSNaClSDKRoot)include;$(VSNaClSDKRoot)include\win;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;</IncludePath>
|
||||
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|PPAPI'">$(VSNaClSDKRoot)lib\win_x86_32_host\$(Configuration);$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib</LibraryPath>
|
||||
|
|
@ -63,8 +63,8 @@
|
|||
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|PPAPI'">$(VSNaClSDKRoot)include;$(VSNaClSDKRoot)include\win;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;</IncludePath>
|
||||
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|PPAPI'">$(VSNaClSDKRoot)lib\win_x86_32_host\$(Configuration);$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib</LibraryPath>
|
||||
<ExecutablePath Condition="'$(Configuration)|$(Platform)'=='Release|PPAPI'">$(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 Tools;$(WindowsSdkDir)bin;$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(FrameworkSDKDir)\bin;$(MSBuildToolsPath32);$(VSInstallDir);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH);</ExecutablePath>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|PPAPI'">win\$(Configuration)\mongooselib\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|PPAPI'">win\$(Configuration)\mongooselib\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|PPAPI'">win\$(Configuration)\civetweblib\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|PPAPI'">win\$(Configuration)\civetweblib\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|PPAPI'">$(ProjectDir)..\..\..\..\lib\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|PPAPI'">$(ProjectDir)..\..\..\..\lib\</OutDir>
|
||||
</PropertyGroup>
|
||||
|
|
@ -72,16 +72,16 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/mongoose;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<AssemblerListingLocation>Release\Win32\mongooselib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Release\Win32\mongooselib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Release\Win32\mongooselib.pdb</ProgramDataBaseFileName>
|
||||
<AssemblerListingLocation>Release\Win32\civetweblib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Release\Win32\civetweblib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Release\Win32\civetweblib.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<CompileAs>Default</CompileAs>
|
||||
|
|
@ -89,15 +89,15 @@
|
|||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Release\Win32\mongooselib.lib</OutputFile>
|
||||
<OutputFile>Release\Win32\civetweblib.lib</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>
|
||||
</ModuleDefinitionFile>
|
||||
<ProgramDatabaseFile>Release\Win32\mongooselib.pdb</ProgramDatabaseFile>
|
||||
<ProgramDatabaseFile>Release\Win32\civetweblib.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImportLibrary>Release\Win32\mongooselib.lib</ImportLibrary>
|
||||
<ImportLibrary>Release\Win32\civetweblib.lib</ImportLibrary>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>
|
||||
|
|
@ -111,15 +111,15 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/mongoose;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<AssemblerListingLocation>Debug\Win32\mongooselib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Debug\Win32\mongooselib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Debug\Win32\mongooselib.pdb</ProgramDataBaseFileName>
|
||||
<AssemblerListingLocation>Debug\Win32\civetweblib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Debug\Win32\civetweblib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Debug\Win32\civetweblib.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
|
|
@ -128,16 +128,16 @@
|
|||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Debug\Win32\mongooselib.lib</OutputFile>
|
||||
<OutputFile>Debug\Win32\civetweblib.lib</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>
|
||||
</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>Debug\Win32\mongooselib.pdb</ProgramDatabaseFile>
|
||||
<ProgramDatabaseFile>Debug\Win32\civetweblib.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImportLibrary>Debug\Win32\mongooselib.lib</ImportLibrary>
|
||||
<ImportLibrary>Debug\Win32\civetweblib.lib</ImportLibrary>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>
|
||||
|
|
@ -153,7 +153,7 @@
|
|||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;</AdditionalDependencies>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../../src/mongoose;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
|
|
@ -166,7 +166,7 @@
|
|||
<AdditionalDependencies>ppapi_cpp.lib;ppapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;</AdditionalDependencies>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../../src/mongoose;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
|
|
@ -178,7 +178,7 @@
|
|||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\..\src\mongoose\mongoose.c" />
|
||||
<ClCompile Include="..\..\..\..\src\civetweb\civetweb.c" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
|
@ -90,7 +90,7 @@
|
|||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;regalglutlib.lib;regalglulib.lib;regallib.lib;mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;regalglutlib.lib;regalglulib.lib;regallib.lib;civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Release\Win32\dreamtorus_static.exe</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -130,7 +130,7 @@
|
|||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;regalglutlib.lib;regalglulib.lib;regallib.lib;mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;regalglutlib.lib;regalglulib.lib;regallib.lib;civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Release\x64\dreamtorus_static.exe</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -167,7 +167,7 @@
|
|||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;regalglutlib.lib;regalglulib.lib;regallib.lib;mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;regalglutlib.lib;regalglulib.lib;regallib.lib;civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Debug\Win32\dreamtorus_static.exe</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -206,7 +206,7 @@
|
|||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;regalglutlib.lib;regalglulib.lib;regallib.lib;mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;regalglutlib.lib;regalglulib.lib;regallib.lib;civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Debug\x64\dreamtorus_static.exe</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ REGAL.INCLUDE :=
|
|||
REGAL.INCLUDE += -Isrc/regal
|
||||
REGAL.INCLUDE += -Isrc/zlib/include
|
||||
REGAL.INCLUDE += -Isrc/libpng/include
|
||||
REGAL.INCLUDE += -Isrc/mongoose
|
||||
REGAL.INCLUDE += -Isrc/civetweb
|
||||
REGAL.INCLUDE += -Isrc/md5/include
|
||||
REGAL.INCLUDE += -Isrc/lookup3
|
||||
REGAL.INCLUDE += -Isrc/jsonsl
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 11.00
|
|||
# Visual Studio 2010
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regal", "Regal.vcxproj", "{6B2786AC-DF6B-8B13-DE42-875D8D9194D9}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E} = {256E64B8-F766-061C-45F8-25B51B7CA24E}
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02} = {DF066256-E0AD-E016-6F07-52E868F96C02}
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08}
|
||||
{12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99}
|
||||
{9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016}
|
||||
|
|
@ -18,7 +18,7 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regallib", "Regallib.vcxpro
|
|||
EndProject
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regalm", "Regalm.vcxproj", "{687DE0BC-8B42-53E9-FB1A-C750ED5CD57C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E} = {256E64B8-F766-061C-45F8-25B51B7CA24E}
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02} = {DF066256-E0AD-E016-6F07-52E868F96C02}
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08}
|
||||
{12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99}
|
||||
{9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016}
|
||||
|
|
@ -37,7 +37,7 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regalw", "Regalw.vcxproj",
|
|||
{B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} = {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "mongooselib", "mongooselib.vcxproj", "{256E64B8-F766-061C-45F8-25B51B7CA24E}"
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "civetweblib", "civetweblib.vcxproj", "{DF066256-E0AD-E016-6F07-52E868F96C02}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
|
|
@ -125,7 +125,7 @@ EndProject
|
|||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "dreamtorus_static", "dreamtorus_static.vcxproj", "{4279720C-503C-C9A3-8714-4E88F1D2B1E0}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{863337BC-C6F9-E4E8-C27D-2D6BAFF72E18} = {863337BC-C6F9-E4E8-C27D-2D6BAFF72E18}
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E} = {256E64B8-F766-061C-45F8-25B51B7CA24E}
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02} = {DF066256-E0AD-E016-6F07-52E868F96C02}
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08}
|
||||
{12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99}
|
||||
{9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016}
|
||||
|
|
@ -195,14 +195,14 @@ Global
|
|||
{324CD1C8-680A-9A1D-EFE7-A93D7EFFE858}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{324CD1C8-680A-9A1D-EFE7-A93D7EFFE858}.Release|x64.Build.0 = Release|x64
|
||||
{324CD1C8-680A-9A1D-EFE7-A93D7EFFE858}.Release|x64.ActiveCfg = Release|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|x64.Build.0 = Debug|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|Win32.Build.0 = Release|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|x64.Build.0 = Release|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|x64.ActiveCfg = Release|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|x64.Build.0 = Debug|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|Win32.Build.0 = Release|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|x64.Build.0 = Release|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|x64.ActiveCfg = Release|x64
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|x64.Build.0 = Debug|x64
|
||||
|
|
@ -365,7 +365,7 @@ Global
|
|||
{687DE0BC-8B42-53E9-FB1A-C750ED5CD57C} = {E5C5BB03-8E38-94D5-C4F7-7A59153EF8F2}
|
||||
{5C0D9EFE-80E2-1DA1-7A53-D640CAE643C0} = {E5C5BB03-8E38-94D5-C4F7-7A59153EF8F2}
|
||||
{324CD1C8-680A-9A1D-EFE7-A93D7EFFE858} = {E5C5BB03-8E38-94D5-C4F7-7A59153EF8F2}
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A}
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A}
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A}
|
||||
{12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A}
|
||||
{9C419167-D705-A241-8927-763A6F9A5016} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regalglewlib", "Regalglewli
|
|||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "mongooselib", "mongooselib.vcxproj", "{256E64B8-F766-061C-45F8-25B51B7CA24E}"
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "civetweblib", "civetweblib.vcxproj", "{DF066256-E0AD-E016-6F07-52E868F96C02}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
|
|
@ -123,14 +123,14 @@ Global
|
|||
{EB036E23-0C3C-CD7C-5456-A9C5E6209A4C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{EB036E23-0C3C-CD7C-5456-A9C5E6209A4C}.Release|x64.Build.0 = Release|x64
|
||||
{EB036E23-0C3C-CD7C-5456-A9C5E6209A4C}.Release|x64.ActiveCfg = Release|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|x64.Build.0 = Debug|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|Win32.Build.0 = Release|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|x64.Build.0 = Release|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|x64.ActiveCfg = Release|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|x64.Build.0 = Debug|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|Win32.Build.0 = Release|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|x64.Build.0 = Release|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|x64.ActiveCfg = Release|x64
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|x64.Build.0 = Debug|x64
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 11.00
|
|||
# Visual Studio 2010
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regal", "Regal.vcxproj", "{6B2786AC-DF6B-8B13-DE42-875D8D9194D9}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E} = {256E64B8-F766-061C-45F8-25B51B7CA24E}
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02} = {DF066256-E0AD-E016-6F07-52E868F96C02}
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08}
|
||||
{12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99}
|
||||
{9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016}
|
||||
|
|
@ -18,7 +18,7 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regallib", "Regallib.vcxpro
|
|||
EndProject
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regalm", "Regalm.vcxproj", "{687DE0BC-8B42-53E9-FB1A-C750ED5CD57C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E} = {256E64B8-F766-061C-45F8-25B51B7CA24E}
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02} = {DF066256-E0AD-E016-6F07-52E868F96C02}
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08}
|
||||
{12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99}
|
||||
{9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016}
|
||||
|
|
@ -37,7 +37,7 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regalw", "Regalw.vcxproj",
|
|||
{B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} = {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "mongooselib", "mongooselib.vcxproj", "{256E64B8-F766-061C-45F8-25B51B7CA24E}"
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "civetweblib", "civetweblib.vcxproj", "{DF066256-E0AD-E016-6F07-52E868F96C02}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
|
|
@ -118,14 +118,14 @@ Global
|
|||
{324CD1C8-680A-9A1D-EFE7-A93D7EFFE858}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{324CD1C8-680A-9A1D-EFE7-A93D7EFFE858}.Release|x64.Build.0 = Release|x64
|
||||
{324CD1C8-680A-9A1D-EFE7-A93D7EFFE858}.Release|x64.ActiveCfg = Release|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|x64.Build.0 = Debug|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|Win32.Build.0 = Release|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|x64.Build.0 = Release|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|x64.ActiveCfg = Release|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|x64.Build.0 = Debug|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|Win32.Build.0 = Release|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|x64.Build.0 = Release|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|x64.ActiveCfg = Release|x64
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|x64.Build.0 = Debug|x64
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -96,7 +96,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>../../../../src/regal/Regal.def</ModuleDefinitionFile>
|
||||
|
|
@ -118,7 +118,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -137,7 +137,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>../../../../src/regal/Regal.def</ModuleDefinitionFile>
|
||||
|
|
@ -157,7 +157,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -175,7 +175,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>../../../../src/regal/Regal.def</ModuleDefinitionFile>
|
||||
|
|
@ -197,7 +197,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -215,7 +215,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>../../../../src/regal/Regal.def</ModuleDefinitionFile>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regallib", "Regallib.vcxpro
|
|||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "mongooselib", "mongooselib.vcxproj", "{256E64B8-F766-061C-45F8-25B51B7CA24E}"
|
||||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "civetweblib", "civetweblib.vcxproj", "{DF066256-E0AD-E016-6F07-52E868F96C02}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
|
|
@ -35,7 +35,7 @@ EndProject
|
|||
Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regaltest", "Regaltest.vcxproj", "{F6188D79-AC4B-7445-0772-B4CEF40D72E1}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{863337BC-C6F9-E4E8-C27D-2D6BAFF72E18} = {863337BC-C6F9-E4E8-C27D-2D6BAFF72E18}
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E} = {256E64B8-F766-061C-45F8-25B51B7CA24E}
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02} = {DF066256-E0AD-E016-6F07-52E868F96C02}
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08}
|
||||
{9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016}
|
||||
{B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} = {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}
|
||||
|
|
@ -60,14 +60,14 @@ Global
|
|||
{863337BC-C6F9-E4E8-C27D-2D6BAFF72E18}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{863337BC-C6F9-E4E8-C27D-2D6BAFF72E18}.Release|x64.Build.0 = Release|x64
|
||||
{863337BC-C6F9-E4E8-C27D-2D6BAFF72E18}.Release|x64.ActiveCfg = Release|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|x64.Build.0 = Debug|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|Win32.Build.0 = Release|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|x64.Build.0 = Release|x64
|
||||
{256E64B8-F766-061C-45F8-25B51B7CA24E}.Release|x64.ActiveCfg = Release|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|x64.Build.0 = Debug|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|Win32.Build.0 = Release|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|x64.Build.0 = Release|x64
|
||||
{DF066256-E0AD-E016-6F07-52E868F96C02}.Release|x64.ActiveCfg = Release|x64
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EF516F6A-1965-7089-C2CA-65778D394F08}.Debug|x64.Build.0 = Debug|x64
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -118,7 +118,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -157,7 +157,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -197,7 +197,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -96,7 +96,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>../../../../src/regal/Regalm.def</ModuleDefinitionFile>
|
||||
|
|
@ -118,7 +118,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -137,7 +137,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>../../../../src/regal/Regalm.def</ModuleDefinitionFile>
|
||||
|
|
@ -157,7 +157,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -175,7 +175,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>../../../../src/regal/Regalm.def</ModuleDefinitionFile>
|
||||
|
|
@ -197,7 +197,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -215,7 +215,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile>../../../../src/regal/Regalm.def</ModuleDefinitionFile>
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -118,7 +118,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -157,7 +157,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -197,7 +197,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_POINTER=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -90,7 +90,7 @@
|
|||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Release\Win32\regalp.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -113,7 +113,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_POINTER=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -130,7 +130,7 @@
|
|||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Release\x64\regalp.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -151,7 +151,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_POINTER=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -167,7 +167,7 @@
|
|||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Debug\Win32\regalp.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -190,7 +190,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_WIN_TLS=1;REGAL_POINTER=1;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -206,7 +206,7 @@
|
|||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>mongooselib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>civetweblib.lib;md5lib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>Debug\x64\regalp.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
|
|
@ -298,4 +298,4 @@
|
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>gtestlib.lib;regallib.lib;mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
|
|
@ -137,7 +137,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>gtestlib.lib;regallib.lib;mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
|
|
@ -175,7 +175,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>gtestlib.lib;regallib.lib;mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
|
|
@ -215,7 +215,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>gtestlib.lib;regallib.lib;mongooselib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -118,7 +118,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
|
@ -157,7 +157,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
@ -197,7 +197,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/mongoose;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
|
|
|||
243
build/win32/vs2010/Regal/civetweb.vcxproj
Normal file
243
build/win32/vs2010/Regal/civetweb.vcxproj
Normal file
|
|
@ -0,0 +1,243 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>civetweb</ProjectName>
|
||||
<ProjectGuid>{B15707F8-F826-E261-AC07-A13E4E801650}</ProjectGuid>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\Win32\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Release\x64\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\Win32\civetweb\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Release\x64\civetweb\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\Win32\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Debug\x64\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\Win32\civetweb\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Debug\x64\civetweb\</IntDir>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">civetweb</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">civetweb</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">civetweb</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">civetweb</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<AssemblerListingLocation>Release\Win32\civetweb\</AssemblerListingLocation>
|
||||
<ObjectFileName>Release\Win32\civetweb\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Release\Win32\civetweb.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>civetweblib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
<ProgramDatabaseFile>Release\Win32\civetweb.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImportLibrary>Release\Win32\civetweb.lib</ImportLibrary>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>
|
||||
</HeaderFileName>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<AssemblerListingLocation>Release\x64\civetweb\</AssemblerListingLocation>
|
||||
<ObjectFileName>Release\x64\civetweb\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Release\x64\civetweb.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>civetweblib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
<ProgramDatabaseFile>Release\x64\civetweb.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>Release\x64\civetweb.lib</ImportLibrary>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>
|
||||
</HeaderFileName>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<AssemblerListingLocation>Debug\Win32\civetweb\</AssemblerListingLocation>
|
||||
<ObjectFileName>Debug\Win32\civetweb\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Debug\Win32\civetweb.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>civetweblib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>Debug\Win32\civetweb.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImportLibrary>Debug\Win32\civetweb.lib</ImportLibrary>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>
|
||||
</HeaderFileName>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<AssemblerListingLocation>Debug\x64\civetweb\</AssemblerListingLocation>
|
||||
<ObjectFileName>Debug\x64\civetweb\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Debug\x64\civetweb.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>civetweblib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>Debug\x64\civetweb.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>Debug\x64\civetweb.lib</ImportLibrary>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>
|
||||
</HeaderFileName>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\..\src\civetweb\main.c" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
|
|
@ -19,8 +19,8 @@
|
|||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>mongooselib</ProjectName>
|
||||
<ProjectGuid>{256E64B8-F766-061C-45F8-25B51B7CA24E}</ProjectGuid>
|
||||
<ProjectName>civetweblib</ProjectName>
|
||||
<ProjectGuid>{DF066256-E0AD-E016-6F07-52E868F96C02}</ProjectGuid>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
|
|
@ -63,31 +63,31 @@
|
|||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\Win32\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Release\x64\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\Win32\mongooselib\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Release\x64\mongooselib\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\Win32\civetweblib\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Release\x64\civetweblib\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\Win32\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Debug\x64\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\Win32\mongooselib\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Debug\x64\mongooselib\</IntDir>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mongooselib</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mongooselib</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mongooselib</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mongooselib</TargetName>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\Win32\civetweblib\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Debug\x64\civetweblib\</IntDir>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">civetweblib</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">civetweblib</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">civetweblib</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">civetweblib</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/mongoose;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>DEBUG_TRACE=0;NO_SSL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<AssemblerListingLocation>Release\Win32\mongooselib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Release\Win32\mongooselib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Release\Win32\mongooselib.pdb</ProgramDataBaseFileName>
|
||||
<AssemblerListingLocation>Release\Win32\civetweblib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Release\Win32\civetweblib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Release\Win32\civetweblib.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<CompileAs>Default</CompileAs>
|
||||
|
|
@ -100,10 +100,10 @@
|
|||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
<ProgramDatabaseFile>Release\Win32\mongooselib.pdb</ProgramDatabaseFile>
|
||||
<ProgramDatabaseFile>Release\Win32\civetweblib.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImportLibrary>Release\Win32\mongooselib.lib</ImportLibrary>
|
||||
<ImportLibrary>Release\Win32\civetweblib.lib</ImportLibrary>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>
|
||||
|
|
@ -118,16 +118,16 @@
|
|||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>../../../../src/mongoose;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>DEBUG_TRACE=0;NO_SSL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<AssemblerListingLocation>Release\x64\mongooselib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Release\x64\mongooselib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Release\x64\mongooselib.pdb</ProgramDataBaseFileName>
|
||||
<AssemblerListingLocation>Release\x64\civetweblib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Release\x64\civetweblib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Release\x64\civetweblib.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<CompileAs>Default</CompileAs>
|
||||
|
|
@ -141,9 +141,9 @@
|
|||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
<ProgramDatabaseFile>Release\x64\mongooselib.pdb</ProgramDatabaseFile>
|
||||
<ProgramDatabaseFile>Release\x64\civetweblib.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>Release\x64\mongooselib.lib</ImportLibrary>
|
||||
<ImportLibrary>Release\x64\civetweblib.lib</ImportLibrary>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>
|
||||
|
|
@ -157,15 +157,15 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/mongoose;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>DEBUG_TRACE=0;NO_SSL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<AssemblerListingLocation>Debug\Win32\mongooselib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Debug\Win32\mongooselib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Debug\Win32\mongooselib.pdb</ProgramDataBaseFileName>
|
||||
<AssemblerListingLocation>Debug\Win32\civetweblib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Debug\Win32\civetweblib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Debug\Win32\civetweblib.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
|
|
@ -180,10 +180,10 @@
|
|||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>Debug\Win32\mongooselib.pdb</ProgramDatabaseFile>
|
||||
<ProgramDatabaseFile>Debug\Win32\civetweblib.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImportLibrary>Debug\Win32\mongooselib.lib</ImportLibrary>
|
||||
<ImportLibrary>Debug\Win32\civetweblib.lib</ImportLibrary>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>
|
||||
|
|
@ -197,15 +197,15 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../../src/mongoose;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../../src/civetweb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>DEBUG_TRACE=0;NO_SSL;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<AssemblerListingLocation>Debug\x64\mongooselib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Debug\x64\mongooselib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Debug\x64\mongooselib.pdb</ProgramDataBaseFileName>
|
||||
<AssemblerListingLocation>Debug\x64\civetweblib\</AssemblerListingLocation>
|
||||
<ObjectFileName>Debug\x64\civetweblib\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>Debug\x64\civetweblib.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<CompileAs>Default</CompileAs>
|
||||
|
|
@ -220,9 +220,9 @@
|
|||
<AdditionalLibraryDirectories>Debug\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>Debug\x64\mongooselib.pdb</ProgramDatabaseFile>
|
||||
<ProgramDatabaseFile>Debug\x64\civetweblib.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>Debug\x64\mongooselib.lib</ImportLibrary>
|
||||
<ImportLibrary>Debug\x64\civetweblib.lib</ImportLibrary>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>
|
||||
|
|
@ -234,7 +234,7 @@
|
|||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\..\src\mongoose\mongoose.c" />
|
||||
<ClCompile Include="..\..\..\..\src\civetweb\civetweb.c" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
|
|
@ -96,7 +96,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;mongooselib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
|
|
@ -137,7 +137,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;mongooselib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Release\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
|
|
@ -175,7 +175,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;mongooselib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\Win32\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
|
|
@ -215,7 +215,7 @@
|
|||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;mongooselib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<AdditionalLibraryDirectories>Debug\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ModuleDefinitionFile></ModuleDefinitionFile>
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
BC3A59B31804680000992687 /* libapitrace.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8ABB1804648500C68C71 /* libapitrace.a */; };
|
||||
BC3A59BA1804680400992687 /* libjsonsl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8AC2180464A200C68C71 /* libjsonsl.a */; };
|
||||
BC3A59BB1804680800992687 /* libmd5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8AC8180464B200C68C71 /* libmd5.a */; };
|
||||
BC3A59BC1804680B00992687 /* libmongoose.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8ACE180464C500C68C71 /* libmongoose.a */; };
|
||||
BC3A59BC1804680B00992687 /* libcivetweb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8ACE180464C500C68C71 /* libcivetweb.a */; };
|
||||
BC3A59BD1804680E00992687 /* libsnappy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8AD4180464D700C68C71 /* libsnappy.a */; };
|
||||
BC3A59BE1804681100992687 /* libsquish.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8ADA180464F400C68C71 /* libsquish.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
|
@ -56,10 +56,10 @@
|
|||
};
|
||||
BC9F8ACD180464C500C68C71 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = BC9F8AC9180464C500C68C71 /* mongoose.xcodeproj */;
|
||||
containerPortal = BC9F8AC9180464C500C68C71 /* civetweb.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 4336676E17C56DC700D45AD9;
|
||||
remoteInfo = mongoose;
|
||||
remoteInfo = civetweb;
|
||||
};
|
||||
BC9F8AD3180464D700C68C71 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
|
|
@ -101,7 +101,7 @@
|
|||
BC9F8AB61804648400C68C71 /* apitrace.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = apitrace.xcodeproj; path = ../../../build/mac/apitrace/apitrace.xcodeproj; sourceTree = "<group>"; };
|
||||
BC9F8ABD180464A200C68C71 /* jsonsl.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = jsonsl.xcodeproj; path = ../../../build/mac/jsonsl/jsonsl.xcodeproj; sourceTree = "<group>"; };
|
||||
BC9F8AC3180464B100C68C71 /* md5.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = md5.xcodeproj; path = ../../../build/mac/md5/md5.xcodeproj; sourceTree = "<group>"; };
|
||||
BC9F8AC9180464C500C68C71 /* mongoose.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = mongoose.xcodeproj; path = ../../../build/mac/mongoose/mongoose.xcodeproj; sourceTree = "<group>"; };
|
||||
BC9F8AC9180464C500C68C71 /* civetweb.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = civetweb.xcodeproj; path = ../../../build/mac/civetweb/civetweb.xcodeproj; sourceTree = "<group>"; };
|
||||
BC9F8ACF180464D700C68C71 /* snappy.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = snappy.xcodeproj; path = ../../../build/mac/snappy/snappy.xcodeproj; sourceTree = "<group>"; };
|
||||
BC9F8AD5180464F400C68C71 /* squish.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = squish.xcodeproj; path = ../../../build/mac/squish/squish.xcodeproj; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
|
@ -113,7 +113,7 @@
|
|||
files = (
|
||||
BC3A59BE1804681100992687 /* libsquish.a in Frameworks */,
|
||||
BC3A59BD1804680E00992687 /* libsnappy.a in Frameworks */,
|
||||
BC3A59BC1804680B00992687 /* libmongoose.a in Frameworks */,
|
||||
BC3A59BC1804680B00992687 /* libcivetweb.a in Frameworks */,
|
||||
BC3A59BB1804680800992687 /* libmd5.a in Frameworks */,
|
||||
BC3A59BA1804680400992687 /* libjsonsl.a in Frameworks */,
|
||||
BC3A59B31804680000992687 /* libapitrace.a in Frameworks */,
|
||||
|
|
@ -157,7 +157,7 @@
|
|||
431D3BFF15C9B635009DD04F /* Regal.xcodeproj */,
|
||||
BC9F8AD5180464F400C68C71 /* squish.xcodeproj */,
|
||||
BC9F8ACF180464D700C68C71 /* snappy.xcodeproj */,
|
||||
BC9F8AC9180464C500C68C71 /* mongoose.xcodeproj */,
|
||||
BC9F8AC9180464C500C68C71 /* civetweb.xcodeproj */,
|
||||
BC9F8AC3180464B100C68C71 /* md5.xcodeproj */,
|
||||
BC9F8ABD180464A200C68C71 /* jsonsl.xcodeproj */,
|
||||
BC9F8AB61804648400C68C71 /* apitrace.xcodeproj */,
|
||||
|
|
@ -241,7 +241,7 @@
|
|||
BC9F8ACA180464C500C68C71 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BC9F8ACE180464C500C68C71 /* libmongoose.a */,
|
||||
BC9F8ACE180464C500C68C71 /* libcivetweb.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -318,7 +318,7 @@
|
|||
},
|
||||
{
|
||||
ProductGroup = BC9F8ACA180464C500C68C71 /* Products */;
|
||||
ProjectRef = BC9F8AC9180464C500C68C71 /* mongoose.xcodeproj */;
|
||||
ProjectRef = BC9F8AC9180464C500C68C71 /* civetweb.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 431D3C0015C9B635009DD04F /* Products */;
|
||||
|
|
@ -369,10 +369,10 @@
|
|||
remoteRef = BC9F8AC7180464B200C68C71 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
BC9F8ACE180464C500C68C71 /* libmongoose.a */ = {
|
||||
BC9F8ACE180464C500C68C71 /* libcivetweb.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libmongoose.a;
|
||||
path = libcivetweb.a;
|
||||
remoteRef = BC9F8ACD180464C500C68C71 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
|
|
|
|||
212
examples/nehe/lesson04/main.c
Normal file
212
examples/nehe/lesson04/main.c
Normal file
|
|
@ -0,0 +1,212 @@
|
|||
/* NeHe Lesson 04 */
|
||||
|
||||
/* ES 1.0 version adapted from Insanity Design */
|
||||
/* http://insanitydesign.com/wp/projects/nehe-android-ports/ */
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <GL/RegalGLEW.h>
|
||||
#include <GL/Regal.h>
|
||||
|
||||
#ifdef __APPLE__
|
||||
#include <GLUT/glut.h>
|
||||
#else
|
||||
#include <GL/RegalGLUT.h>
|
||||
#endif
|
||||
|
||||
static void init()
|
||||
{
|
||||
glShadeModel(GL_SMOOTH); // Enable Smooth Shading
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background
|
||||
glClearDepth(1.0f); // Depth Buffer Setup
|
||||
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
|
||||
glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do
|
||||
glDisable(GL_CULL_FACE);
|
||||
|
||||
// Really Nice Perspective Calculations
|
||||
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
|
||||
}
|
||||
|
||||
static void reshape(int width, int height)
|
||||
{
|
||||
if (height<1) { // Prevent A Divide By Zero By
|
||||
height = 1; // Making Height Equal One
|
||||
}
|
||||
|
||||
glViewport(0, 0, width, height); // Reset The Current Viewport
|
||||
glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
|
||||
glLoadIdentity(); // Reset The Projection Matrix
|
||||
|
||||
//Calculate The Aspect Ratio Of The Window
|
||||
gluPerspective(45.0f, (float)width / (float)height, 0.1f, 100.0f);
|
||||
|
||||
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
|
||||
glLoadIdentity(); // Reset The Modelview Matrix
|
||||
}
|
||||
|
||||
static void drawSquare()
|
||||
{
|
||||
/** The initial vertex definition */
|
||||
const float vertices[] = {
|
||||
-1.0f, -1.0f, 0.0f, // Bottom Left
|
||||
1.0f, -1.0f, 0.0f, // Bottom Right
|
||||
-1.0f, 1.0f, 0.0f, // Top Left
|
||||
1.0f, 1.0f, 0.0f // Top Right
|
||||
};
|
||||
|
||||
const float colors[] = {
|
||||
0.0f, 0.0f, 1.0f, 1.0f, // Blue
|
||||
0.0f, 0.0f, 1.0f, 1.0f, // Blue
|
||||
0.0f, 0.0f, 1.0f, 1.0f // Blue
|
||||
};
|
||||
|
||||
// Set the face rotation
|
||||
glFrontFace(GL_CCW);
|
||||
|
||||
// Point to our vertex buffer
|
||||
glVertexPointer(3, GL_FLOAT, 0, vertices);
|
||||
// glColorPointer(4, GL_FLOAT, 0, colors);
|
||||
|
||||
#if 1
|
||||
// Set The Color To Blue
|
||||
glColor4f(0.5f, 0.5f, 1.0f, 1.0f);
|
||||
#endif
|
||||
|
||||
// Enable vertex buffer
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
// glEnableClientState(GL_COLOR_ARRAY);
|
||||
|
||||
// Draw the vertices as triangle strip
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||
|
||||
// Disable the client state before leaving
|
||||
glDisableClientState(GL_VERTEX_ARRAY);
|
||||
// glDisableClientState(GL_COLOR_ARRAY);
|
||||
}
|
||||
|
||||
static void drawTriangle()
|
||||
{
|
||||
/** The initial vertex definition */
|
||||
const float vertices[] = {
|
||||
0.0f, 1.0f, 0.0f, //Top
|
||||
-1.0f, -1.0f, 0.0f, //Bottom Left
|
||||
1.0f, -1.0f, 0.0f //Bottom Right
|
||||
};
|
||||
/** The initial color definition */
|
||||
const float colors[] = {
|
||||
1.0f, 0.0f, 0.0f, 1.0f, // Set The Color To Red with full luminance
|
||||
0.0f, 1.0f, 0.0f, 1.0f, // Set The Color To Green with full luminance
|
||||
0.0f, 0.0f, 1.0f, 1.0f // Set The Color To Blue with full luminance
|
||||
};
|
||||
|
||||
//Set the face rotation
|
||||
glFrontFace(GL_CW);
|
||||
|
||||
glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT);
|
||||
|
||||
//Point to our buffers
|
||||
glVertexPointer(3, GL_FLOAT, 0, vertices);
|
||||
glColorPointer(4, GL_FLOAT, 0, colors);
|
||||
|
||||
//Enable the vertex and color state
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glEnableClientState(GL_COLOR_ARRAY);
|
||||
|
||||
//Draw the vertices as triangles
|
||||
glDrawArrays(GL_TRIANGLES, 0, 3);
|
||||
|
||||
//Disable the client state before leaving
|
||||
glDisableClientState(GL_VERTEX_ARRAY);
|
||||
glDisableClientState(GL_COLOR_ARRAY);
|
||||
}
|
||||
|
||||
float rquad = 0.0f;
|
||||
float rtri = 0.0f;
|
||||
|
||||
static void display(void)
|
||||
{
|
||||
// Clear Screen And Depth Buffer
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
// Reset The Current Modelview Matrix
|
||||
|
||||
glLoadIdentity();
|
||||
|
||||
// Drawing
|
||||
|
||||
glTranslatef(0.0f, -1.2f, -6.0f); // Move down 1.0 Unit And Into The Screen 6.0
|
||||
glRotatef(rquad, 1.0f, 0.0f, 0.0f); // Rotate The Square On The X axis ( NEW )
|
||||
drawSquare(); // Draw the square
|
||||
|
||||
// Reset The Current Modelview Matrix
|
||||
|
||||
glLoadIdentity();
|
||||
|
||||
glTranslatef(0.0f, 1.3f, -6.0f); // Move up 1.3 Units and -6.0 into the Screen
|
||||
glRotatef(rtri, 0.0f, 1.0f, 0.0f); // Rotate The Triangle On The Y axis ( NEW )
|
||||
drawTriangle(); // Draw the triangle
|
||||
|
||||
// Rotation
|
||||
rtri += 0.2f; // Increase The Rotation Variable For The Triangle ( NEW )
|
||||
rquad -= 0.15f; // Decrease The Rotation Variable For The Quad ( NEW )
|
||||
|
||||
glutSwapBuffers();
|
||||
}
|
||||
|
||||
static void idle(void)
|
||||
{
|
||||
glutPostRedisplay();
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int status;
|
||||
|
||||
glutInitWindowSize(512,512);
|
||||
glutInit(&argc, argv);
|
||||
|
||||
glutCreateWindow("NeHe Lesson04 for ES 1.0");
|
||||
|
||||
// Regal workaround for OSX GLUT
|
||||
|
||||
#ifdef __APPLE__
|
||||
extern void *CGLGetCurrentContext(void);
|
||||
RegalMakeCurrent(CGLGetCurrentContext());
|
||||
#endif
|
||||
|
||||
status = glewInit();
|
||||
if (status != GLEW_OK)
|
||||
{
|
||||
printf("OpenGL Extension Wrangler (GLEW) failed to initialize");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
printf("vendor: %s\n", glGetString(GL_VENDOR));
|
||||
printf("version: %s\n", glGetString(GL_VERSION));
|
||||
printf("renderer: %s\n", glGetString(GL_RENDERER));
|
||||
|
||||
if (!glewIsSupported("GL_REGAL_ES1_0_compatibility"))
|
||||
{
|
||||
printf("GL_REGAL_ES1_0_compatibility is not supported.\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (!glewIsSupported("GL_REGAL_ES1_1_compatibility"))
|
||||
{
|
||||
printf("GL_REGAL_ES1_1_compatibility is not supported.\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
glutDisplayFunc(display);
|
||||
glutReshapeFunc(reshape);
|
||||
glutIdleFunc(idle);
|
||||
|
||||
init();
|
||||
|
||||
glutMainLoop();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
191
examples/redbook/checker.cpp
Normal file
191
examples/redbook/checker.cpp
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
/*
|
||||
* Copyright (c) 1993-1997, Silicon Graphics, Inc.
|
||||
* ALL RIGHTS RESERVED
|
||||
* Permission to use, copy, modify, and distribute this software for
|
||||
* any purpose and without fee is hereby granted, provided that the above
|
||||
* copyright notice appear in all copies and that both the copyright notice
|
||||
* and this permission notice appear in supporting documentation, and that
|
||||
* the name of Silicon Graphics, Inc. not be used in advertising
|
||||
* or publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission.
|
||||
*
|
||||
* THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
|
||||
* AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
|
||||
* GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
|
||||
* SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
|
||||
* KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
|
||||
* LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
|
||||
* THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
|
||||
* POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* US Government Users Restricted Rights
|
||||
* Use, duplication, or disclosure by the Government is subject to
|
||||
* restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
|
||||
* (c)(1)(ii) of the Rights in Technical Data and Computer Software
|
||||
* clause at DFARS 252.227-7013 and/or in similar or successor
|
||||
* clauses in the FAR or the DOD or NASA FAR Supplement.
|
||||
* Unpublished-- rights reserved under the copyright laws of the
|
||||
* United States. Contractor/manufacturer is Silicon Graphics,
|
||||
* Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
|
||||
*
|
||||
* OpenGL(R) is a registered trademark of Silicon Graphics, Inc.
|
||||
*/
|
||||
|
||||
/* checker.c
|
||||
* This program texture maps a checkerboard image onto
|
||||
* two rectangles.
|
||||
*
|
||||
* If running this program on OpenGL 1.0, texture objects are
|
||||
* not used.
|
||||
*/
|
||||
|
||||
#include <GL/Regal.h>
|
||||
#include <GL/RegalGLU.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/******************************************************************/
|
||||
|
||||
/*
|
||||
#define USE_VERSION_1_1 0
|
||||
*/
|
||||
|
||||
#ifndef USE_VERSION_1_1
|
||||
#define USE_VERSION_1_1 1
|
||||
#endif
|
||||
|
||||
/* 0 through 7 work on Mac OSX with and without Regal emulation */
|
||||
/* 0 through 3 work on Nvidia Win7 without Regal emulation */
|
||||
/* 0 through 7 work on Nvidia Win7 with Regal emulation */
|
||||
|
||||
#define USE_UNIT (GL_TEXTURE0+7)
|
||||
|
||||
/******************************************************************/
|
||||
|
||||
#if USE_VERSION_1_1
|
||||
static GLuint texName;
|
||||
#endif
|
||||
|
||||
/* Create checkerboard texture */
|
||||
#define checkImageWidth 64
|
||||
#define checkImageHeight 64
|
||||
static GLubyte checkImage[checkImageHeight][checkImageWidth][4];
|
||||
|
||||
void makeCheckImage(void)
|
||||
{
|
||||
int i, j, c;
|
||||
|
||||
for (i = 0; i < checkImageHeight; i++) {
|
||||
for (j = 0; j < checkImageWidth; j++) {
|
||||
c = ((((i&0x8)==0)^((j&0x8))==0))*255;
|
||||
checkImage[i][j][0] = (GLubyte) c;
|
||||
checkImage[i][j][1] = (GLubyte) c;
|
||||
checkImage[i][j][2] = (GLubyte) c;
|
||||
checkImage[i][j][3] = (GLubyte) 255;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dreamTorusInit(void)
|
||||
{
|
||||
/* Report the number of available texture units */
|
||||
|
||||
GLint textureUnits,vertexUnits,fragmentUnits,combinedUnits;
|
||||
GLint vertexAttribs;
|
||||
|
||||
glGetIntegerv(GL_MAX_TEXTURE_UNITS, &textureUnits);
|
||||
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &fragmentUnits);
|
||||
glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &vertexUnits);
|
||||
glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,&combinedUnits);
|
||||
|
||||
printf("%d texture units, %d fragment, %d vertex and %d combined texture units.\n",textureUnits,fragmentUnits,vertexUnits,combinedUnits);
|
||||
|
||||
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &vertexAttribs);
|
||||
|
||||
printf("%u vertex attributes.\n",vertexAttribs);
|
||||
|
||||
/* Initialize OpenGL */
|
||||
|
||||
glClearColor (0.0, 1.0, 0.0, 0.0);
|
||||
glShadeModel(GL_FLAT);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
#ifdef USE_UNIT
|
||||
glActiveTexture(USE_UNIT);
|
||||
#endif
|
||||
|
||||
makeCheckImage();
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
|
||||
#if USE_VERSION_1_1
|
||||
glGenTextures(1, &texName);
|
||||
glBindTexture(GL_TEXTURE_2D, texName);
|
||||
#endif
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
#if USE_VERSION_1_1
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, checkImageHeight,
|
||||
0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage);
|
||||
#else
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, 4, checkImageWidth, checkImageHeight,
|
||||
0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage);
|
||||
#endif
|
||||
}
|
||||
|
||||
void dreamTorusDisplay(bool clear)
|
||||
{
|
||||
if (clear)
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
|
||||
#if USE_VERSION_1_1
|
||||
glBindTexture(GL_TEXTURE_2D, texName);
|
||||
#endif
|
||||
|
||||
glBegin(GL_QUADS);
|
||||
|
||||
#ifdef USE_UNIT
|
||||
glMultiTexCoord2f(USE_UNIT, 0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0);
|
||||
glMultiTexCoord2f(USE_UNIT, 0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0);
|
||||
glMultiTexCoord2f(USE_UNIT, 1.0, 1.0); glVertex3f(0.0, 1.0, 0.0);
|
||||
glMultiTexCoord2f(USE_UNIT, 1.0, 0.0); glVertex3f(0.0, -1.0, 0.0);
|
||||
|
||||
glMultiTexCoord2f(USE_UNIT, 0.0, 0.0); glVertex3f(1.0, -1.0, 0.0);
|
||||
glMultiTexCoord2f(USE_UNIT, 0.0, 1.0); glVertex3f(1.0, 1.0, 0.0);
|
||||
glMultiTexCoord2f(USE_UNIT, 1.0, 1.0); glVertex3f(2.41421, 1.0, -1.41421);
|
||||
glMultiTexCoord2f(USE_UNIT, 1.0, 0.0); glVertex3f(2.41421, -1.0, -1.41421);
|
||||
#else
|
||||
glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0);
|
||||
glTexCoord2f(0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0);
|
||||
glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 1.0, 0.0);
|
||||
glTexCoord2f(1.0, 0.0); glVertex3f(0.0, -1.0, 0.0);
|
||||
|
||||
glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0);
|
||||
glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0);
|
||||
glTexCoord2f(1.0, 1.0); glVertex3f(2.41421, 1.0, -1.41421);
|
||||
glTexCoord2f(1.0, 0.0); glVertex3f(2.41421, -1.0, -1.41421);
|
||||
#endif
|
||||
glEnd();
|
||||
glFlush();
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
}
|
||||
|
||||
void dreamTorusReshape(int w, int h)
|
||||
{
|
||||
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadIdentity();
|
||||
glTranslatef(0.0, 0.0, -3.6);
|
||||
}
|
||||
|
|
@ -3731,7 +3731,7 @@ REGAL_DECL GLsync REGAL_CALL plugin_glCreateSyncFromCLeventARB(cl_context contex
|
|||
typedef void (REGAL_CALL *PFNGLCLEARBUFFERDATAPROC)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data);
|
||||
typedef void (REGAL_CALL *PFNGLCLEARBUFFERSUBDATAPROC)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data);
|
||||
typedef void (REGAL_CALL *PFNGLCLEARNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data);
|
||||
typedef void (REGAL_CALL *PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data);
|
||||
typedef void (REGAL_CALL *PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data);
|
||||
#endif
|
||||
|
||||
#ifndef REGAL_NO_NAMESPACE_GL_ARB_CLEAR_BUFFER_OBJECT
|
||||
|
|
@ -3745,14 +3745,14 @@ typedef void (REGAL_CALL *PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GL
|
|||
REGAL_DECL void REGAL_CALL glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data);
|
||||
REGAL_DECL void REGAL_CALL glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data);
|
||||
REGAL_DECL void REGAL_CALL glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data);
|
||||
REGAL_DECL void REGAL_CALL glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data);
|
||||
REGAL_DECL void REGAL_CALL glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data);
|
||||
#endif
|
||||
|
||||
#ifndef REGAL_NO_PLUGIN_GL_ARB_CLEAR_BUFFER_OBJECT
|
||||
REGAL_DECL void REGAL_CALL plugin_glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data);
|
||||
REGAL_DECL void REGAL_CALL plugin_glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data);
|
||||
REGAL_DECL void REGAL_CALL plugin_glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data);
|
||||
REGAL_DECL void REGAL_CALL plugin_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data);
|
||||
REGAL_DECL void REGAL_CALL plugin_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data);
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -20405,10 +20405,10 @@ glClearNamedBufferSubDataEXT = Function('glClearNamedBufferSubDataEXT')
|
|||
glClearNamedBufferSubDataEXT.ret = Return('void')
|
||||
glClearNamedBufferSubDataEXT.add( Input( 'buffer','GLuint' ))
|
||||
glClearNamedBufferSubDataEXT.add( Input( 'internalformat','GLenum' ))
|
||||
glClearNamedBufferSubDataEXT.add( Input( 'format','GLenum' ))
|
||||
glClearNamedBufferSubDataEXT.add( Input( 'type','GLenum' ))
|
||||
glClearNamedBufferSubDataEXT.add( Input( 'offset','GLintptr' ))
|
||||
glClearNamedBufferSubDataEXT.add( Input( 'size','GLsizeiptr' ))
|
||||
glClearNamedBufferSubDataEXT.add( Input( 'format','GLenum' ))
|
||||
glClearNamedBufferSubDataEXT.add( Input( 'type','GLenum' ))
|
||||
glClearNamedBufferSubDataEXT.add( Input( 'data','const GLvoid *' ))
|
||||
glClearNamedBufferSubDataEXT.version = ''
|
||||
glClearNamedBufferSubDataEXT.category = 'GL_ARB_clear_buffer_object'
|
||||
|
|
|
|||
|
|
@ -67,7 +67,6 @@ exclude = [
|
|||
'GL_NV_blend_equation_advanced',
|
||||
'GL_NV_blend_equation_advanced_coherent',
|
||||
'GL_NV_copy_buffer',
|
||||
'GL_NV_framebuffer_blit',
|
||||
'GL_NV_non_square_matrices',
|
||||
'GL_NV_vdpau_interop',
|
||||
|
||||
|
|
|
|||
|
|
@ -223,8 +223,16 @@ public:
|
|||
};
|
||||
|
||||
|
||||
CallSet::CallSet(const char *string): limits(std::numeric_limits<CallNo>::min(), std::numeric_limits<CallNo>::max())
|
||||
void
|
||||
CallSet::merge(const char *string)
|
||||
{
|
||||
if (firstmerge) {
|
||||
if (!empty()) {
|
||||
*this = CallSet();
|
||||
}
|
||||
firstmerge = false;
|
||||
}
|
||||
|
||||
if (*string == '@') {
|
||||
FileCallSetParser parser(*this, &string[1]);
|
||||
parser.parse();
|
||||
|
|
@ -235,7 +243,7 @@ CallSet::CallSet(const char *string): limits(std::numeric_limits<CallNo>::min(),
|
|||
}
|
||||
|
||||
|
||||
CallSet::CallSet(CallFlags freq): limits(std::numeric_limits<CallNo>::min(), std::numeric_limits<CallNo>::max()) {
|
||||
CallSet::CallSet(CallFlags freq): limits(std::numeric_limits<CallNo>::min(), std::numeric_limits<CallNo>::max()), firstmerge(true) {
|
||||
if (freq != FREQUENCY_NONE) {
|
||||
CallNo start = std::numeric_limits<CallNo>::min();
|
||||
CallNo stop = std::numeric_limits<CallNo>::max();
|
||||
|
|
@ -244,3 +252,4 @@ CallSet::CallSet(CallFlags freq): limits(std::numeric_limits<CallNo>::min(), std
|
|||
assert(!empty());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@ namespace trace {
|
|||
{
|
||||
private:
|
||||
CallRange limits;
|
||||
bool firstmerge;
|
||||
|
||||
public:
|
||||
FastCallSet fast_call_set;
|
||||
|
|
@ -114,11 +115,12 @@ namespace trace {
|
|||
typedef std::list< CallRange > RangeList;
|
||||
RangeList ranges;
|
||||
|
||||
CallSet(): limits(std::numeric_limits<CallNo>::min(), std::numeric_limits<CallNo>::max()) {}
|
||||
CallSet(): limits(std::numeric_limits<CallNo>::min(), std::numeric_limits<CallNo>::max()), firstmerge(true) {}
|
||||
|
||||
CallSet(CallFlags freq);
|
||||
|
||||
CallSet(const char *str);
|
||||
void
|
||||
merge(const char *str);
|
||||
|
||||
// Not empty set
|
||||
inline bool
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <limits>
|
||||
#include <vector>
|
||||
|
||||
#include "os.hpp"
|
||||
#include "trace_fast_callset.hpp"
|
||||
|
|
@ -39,12 +40,13 @@ using namespace trace;
|
|||
#define MAX_LEVEL 16
|
||||
|
||||
FastCallRange::FastCallRange(CallNo first, CallNo last, int level)
|
||||
: ref_counter(0)
|
||||
{
|
||||
this->first = first;
|
||||
this->last = last;
|
||||
this->level = level;
|
||||
|
||||
next = new FastCallRange*[level];
|
||||
next.resize(level, 0);
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
@ -64,9 +66,6 @@ FastCallSet::FastCallSet(): head(0, 0, MAX_LEVEL)
|
|||
head.first = std::numeric_limits<CallNo>::max();
|
||||
head.last = std::numeric_limits<CallNo>::min();
|
||||
|
||||
for (int i = 0; i < MAX_LEVEL; i++)
|
||||
head.next[i] = NULL;
|
||||
|
||||
max_level = 0;
|
||||
}
|
||||
|
||||
|
|
@ -97,15 +96,17 @@ random_level (void)
|
|||
void
|
||||
FastCallSet::add(CallNo first, CallNo last)
|
||||
{
|
||||
FastCallRange **update[MAX_LEVEL];
|
||||
FastCallRange *node, *next;
|
||||
std::vector<FastCallRangePtr*> update (MAX_LEVEL);
|
||||
FastCallRange *node;
|
||||
FastCallRangePtr new_node;
|
||||
int i, level;
|
||||
|
||||
/* Find node immediately before insertion point. */
|
||||
node = &head;
|
||||
/* Find node immediately before insertion point.
|
||||
* NOTE: FastCallRangePtr(), e.g., next[i](), returns FastCallRange* */
|
||||
node = &head; // Can't reference &head as a FastCallRangePtr
|
||||
for (i = max_level - 1; i >= 0; i--) {
|
||||
while (node->next[i] && first > node->next[i]->last) {
|
||||
node = node->next[i];
|
||||
while (node->next[i]() && first > node->next[i]->last) {
|
||||
node = node->next[i]();
|
||||
}
|
||||
update[i] = &node->next[i];
|
||||
}
|
||||
|
|
@ -113,13 +114,14 @@ FastCallSet::add(CallNo first, CallNo last)
|
|||
/* Can we contain first by expanding tail of current range by 1? */
|
||||
if (node != &head && node->last == first - 1) {
|
||||
|
||||
node->last = last;
|
||||
new_node = FastCallRangePtr(node);
|
||||
new_node->last = last;
|
||||
goto MERGE_NODE_WITH_SUBSEQUENT_COVERED_NODES;
|
||||
|
||||
}
|
||||
|
||||
/* Current range could not contain first, look at next. */
|
||||
node = node->next[0];
|
||||
node = node->next[0]();
|
||||
|
||||
if (node) {
|
||||
/* Do nothing if new range is already entirely contained. */
|
||||
|
|
@ -136,7 +138,8 @@ FastCallSet::add(CallNo first, CallNo last)
|
|||
|
||||
/* This is our candidate node if first is contained */
|
||||
if (node->first <= first && node->last >= first) {
|
||||
node->last = last;
|
||||
new_node = FastCallRangePtr(node);
|
||||
new_node->last = last;
|
||||
goto MERGE_NODE_WITH_SUBSEQUENT_COVERED_NODES;
|
||||
}
|
||||
}
|
||||
|
|
@ -152,21 +155,21 @@ FastCallSet::add(CallNo first, CallNo last)
|
|||
max_level = level;
|
||||
}
|
||||
|
||||
node = new FastCallRange(first, last, level);
|
||||
new_node = FastCallRangePtr(new FastCallRange(first, last, level));
|
||||
|
||||
/* Perform insertion into all lists. */
|
||||
for (i = 0; i < level; i++) {
|
||||
node->next[i] = *update[i];
|
||||
*update[i] = node;
|
||||
new_node->next[i] = *update[i];
|
||||
*update[i] = new_node;
|
||||
}
|
||||
|
||||
MERGE_NODE_WITH_SUBSEQUENT_COVERED_NODES:
|
||||
next = node->next[0];
|
||||
while (next && next->first <= node->last + 1) {
|
||||
FastCallRangePtr next = new_node->next[0];
|
||||
node = new_node();
|
||||
while (next() && next->first <= node->last + 1) {
|
||||
if (next->last > node->last)
|
||||
node->last = next->last;
|
||||
|
||||
/* Delete node 'next' */
|
||||
for (i = 0; i < node->level && i < next->level; i++) {
|
||||
node->next[i] = next->next[i];
|
||||
}
|
||||
|
|
@ -175,8 +178,6 @@ MERGE_NODE_WITH_SUBSEQUENT_COVERED_NODES:
|
|||
*update[i] = next->next[i];
|
||||
}
|
||||
|
||||
delete next;
|
||||
|
||||
next = node->next[0];
|
||||
}
|
||||
}
|
||||
|
|
@ -190,17 +191,17 @@ FastCallSet::add(CallNo call_no)
|
|||
bool
|
||||
FastCallSet::contains(CallNo call_no) const
|
||||
{
|
||||
const FastCallRange *node;
|
||||
FastCallRange *node;
|
||||
int i;
|
||||
|
||||
node = &head;
|
||||
node = const_cast<FastCallRange*>(&head);
|
||||
for (i = max_level - 1; i >= 0; i--) {
|
||||
while (node->next[i] && call_no > node->next[i]->last) {
|
||||
node = node->next[i];
|
||||
while (node->next[i]() && call_no > node->next[i]->last) {
|
||||
node = node->next[i]();
|
||||
}
|
||||
}
|
||||
|
||||
node = node->next[0];
|
||||
node = node->next[0]();
|
||||
|
||||
if (node == NULL)
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -62,16 +62,63 @@ namespace trace {
|
|||
* optimizations in some cases).
|
||||
*/
|
||||
|
||||
class FastCallRangePtr;
|
||||
|
||||
class FastCallRange {
|
||||
public:
|
||||
CallNo first;
|
||||
CallNo last;
|
||||
int level;
|
||||
FastCallRange **next;
|
||||
std::vector<FastCallRangePtr> next;
|
||||
|
||||
// (NOTE: Initalize ref_counter to 0 in all constructors)
|
||||
FastCallRange(CallNo first, CallNo last, int level);
|
||||
|
||||
bool contains(CallNo call_no) const;
|
||||
|
||||
private:
|
||||
friend class FastCallRangePtr;
|
||||
size_t ref_counter;
|
||||
// ref_counter must be initialized to 0 by all constructors
|
||||
// ref_counter is the number of FastCallRangePtr objects that point at this
|
||||
};
|
||||
|
||||
class FastCallRangePtr {
|
||||
public:
|
||||
FastCallRange* operator-> () { return this->ptr; }
|
||||
FastCallRange& operator * () { return *this->ptr; }
|
||||
FastCallRange* operator ()() { return this->ptr; } // get pointer
|
||||
|
||||
|
||||
FastCallRangePtr () : ptr(0) {}
|
||||
FastCallRangePtr(FastCallRange* _ptr) : ptr(_ptr)
|
||||
{ if (this->ptr) ++this->ptr->ref_counter; }
|
||||
|
||||
~FastCallRangePtr() { if (this->ptr)
|
||||
if (--this->ptr->ref_counter == 0)
|
||||
delete this->ptr;
|
||||
}
|
||||
|
||||
FastCallRangePtr(FastCallRangePtr const& _ptr) : ptr(_ptr.ptr)
|
||||
{ if (this->ptr) ++this->ptr->ref_counter; }
|
||||
|
||||
FastCallRangePtr& operator= (FastCallRangePtr const& new_ptr)
|
||||
{ // DO NOT CHANGE THE ORDER OF THESE STATEMENTS!
|
||||
// (This order properly handles self-assignment)
|
||||
// (This order also properly handles recursion, e.g.,
|
||||
// if a FastCallRange contains FastCallRangePtrs)
|
||||
FastCallRange* const old_ptr = this->ptr;
|
||||
this->ptr = new_ptr.ptr;
|
||||
if (this->ptr)
|
||||
++this->ptr->ref_counter;
|
||||
if (old_ptr) {
|
||||
if (--old_ptr->ref_counter == 0)
|
||||
delete old_ptr;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
private:
|
||||
FastCallRange* ptr;
|
||||
};
|
||||
|
||||
class FastCallSet {
|
||||
|
|
|
|||
|
|
@ -23492,10 +23492,10 @@ static inline void APIENTRY _glClearNamedBufferDataEXT(GLuint buffer, GLenum int
|
|||
_glClearNamedBufferDataEXT_ptr(buffer, internalformat, format, type, data);
|
||||
}
|
||||
|
||||
typedef void (APIENTRY * PFN_GLCLEARNAMEDBUFFERSUBDATAEXT)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void * data);
|
||||
typedef void (APIENTRY * PFN_GLCLEARNAMEDBUFFERSUBDATAEXT)(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data);
|
||||
static PFN_GLCLEARNAMEDBUFFERSUBDATAEXT _glClearNamedBufferSubDataEXT_ptr = NULL;
|
||||
|
||||
static inline void APIENTRY _glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void * data) {
|
||||
static inline void APIENTRY _glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data) {
|
||||
const char *_name = "glClearNamedBufferSubDataEXT";
|
||||
if (!_glClearNamedBufferSubDataEXT_ptr) {
|
||||
_glClearNamedBufferSubDataEXT_ptr = (PFN_GLCLEARNAMEDBUFFERSUBDATAEXT)_getPrivateProcAddress(_name);
|
||||
|
|
@ -23504,7 +23504,7 @@ static inline void APIENTRY _glClearNamedBufferSubDataEXT(GLuint buffer, GLenum
|
|||
return;
|
||||
}
|
||||
}
|
||||
_glClearNamedBufferSubDataEXT_ptr(buffer, internalformat, format, type, offset, size, data);
|
||||
_glClearNamedBufferSubDataEXT_ptr(buffer, internalformat, offset, size, format, type, data);
|
||||
}
|
||||
|
||||
typedef void (APIENTRY * PFN_GLDISPATCHCOMPUTE)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
|
||||
|
|
@ -42710,6 +42710,21 @@ static inline void APIENTRY _glDrawTextureNV(GLuint texture, GLuint sampler, GLf
|
|||
_glDrawTextureNV_ptr(texture, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1);
|
||||
}
|
||||
|
||||
typedef void (APIENTRY * PFN_GLBLITFRAMEBUFFERNV)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
static PFN_GLBLITFRAMEBUFFERNV _glBlitFramebufferNV_ptr = NULL;
|
||||
|
||||
static inline void APIENTRY _glBlitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
|
||||
const char *_name = "glBlitFramebufferNV";
|
||||
if (!_glBlitFramebufferNV_ptr) {
|
||||
_glBlitFramebufferNV_ptr = (PFN_GLBLITFRAMEBUFFERNV)_getPrivateProcAddress(_name);
|
||||
if (!_glBlitFramebufferNV_ptr) {
|
||||
os::log("warning: ignoring call to unavailable function %s\n", _name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
_glBlitFramebufferNV_ptr(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
}
|
||||
|
||||
typedef GLuint (APIENTRY * PFN_GLNEWBUFFERREGION)(GLenum type);
|
||||
static PFN_GLNEWBUFFERREGION _glNewBufferRegion_ptr = NULL;
|
||||
|
||||
|
|
@ -45247,6 +45262,7 @@ static inline void APIENTRY _glAddSwapHintRectWIN(GLint x, GLint y, GLsizei widt
|
|||
#define glTexStorageSparseAMD _glTexStorageSparseAMD
|
||||
#define glTextureStorageSparseAMD _glTextureStorageSparseAMD
|
||||
#define glDrawTextureNV _glDrawTextureNV
|
||||
#define glBlitFramebufferNV _glBlitFramebufferNV
|
||||
#define glNewBufferRegion _glNewBufferRegion
|
||||
#define glDeleteBufferRegion _glDeleteBufferRegion
|
||||
#define glReadBufferRegion _glReadBufferRegion
|
||||
|
|
|
|||
|
|
@ -896,12 +896,26 @@ _gl_image_size(GLenum format, GLenum type, GLsizei width, GLsizei height, GLsize
|
|||
image_height = height;
|
||||
}
|
||||
|
||||
/* XXX: GL_UNPACK_IMAGE_HEIGHT and GL_UNPACK_SKIP_IMAGES should probably
|
||||
* not be considered for pixel rectangles. */
|
||||
|
||||
size_t image_stride = image_height*row_stride;
|
||||
|
||||
size_t size = depth*image_stride;
|
||||
/*
|
||||
* We can't just do
|
||||
*
|
||||
* size = depth*image_stride
|
||||
*
|
||||
* here as that could result in reading beyond the end of the buffer when
|
||||
* selecting sub-rectangles via GL_UNPACK_SKIP_*.
|
||||
*/
|
||||
size_t size = (width*bits_per_pixel + 7)/8;
|
||||
if (height > 1) {
|
||||
size += (height - 1)*row_stride;
|
||||
}
|
||||
if (depth > 1) {
|
||||
size += (depth - 1)*image_stride;
|
||||
}
|
||||
|
||||
/* XXX: GL_UNPACK_IMAGE_HEIGHT and GL_UNPACK_SKIP_IMAGES should probably
|
||||
* not be considered for pixel rectangles. */
|
||||
|
||||
size += (skip_pixels*bits_per_pixel + 7)/8;
|
||||
size += skip_rows*row_stride;
|
||||
|
|
|
|||
|
|
@ -182,8 +182,8 @@ IDirect3DDevice9.methods += [
|
|||
StdMethod(HRESULT, "CreateDepthStencilSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (DWORD, "MultisampleQuality"), (BOOL, "Discard"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), (Pointer(HANDLE), "pSharedHandle")]),
|
||||
StdMethod(HRESULT, "UpdateSurface", [(PDIRECT3DSURFACE9, "pSourceSurface"), (ConstPointer(RECT), "pSourceRect"), (PDIRECT3DSURFACE9, "pDestinationSurface"), (ConstPointer(POINT), "pDestPoint")]),
|
||||
StdMethod(HRESULT, "UpdateTexture", [(PDIRECT3DBASETEXTURE9, "pSourceTexture"), (PDIRECT3DBASETEXTURE9, "pDestinationTexture")]),
|
||||
StdMethod(HRESULT, "GetRenderTargetData", [(PDIRECT3DSURFACE9, "pRenderTarget"), (PDIRECT3DSURFACE9, "pDestSurface")], sideeffects=False),
|
||||
StdMethod(HRESULT, "GetFrontBufferData", [(UINT, "iSwapChain"), (PDIRECT3DSURFACE9, "pDestSurface")], sideeffects=False),
|
||||
StdMethod(HRESULT, "GetRenderTargetData", [(PDIRECT3DSURFACE9, "pRenderTarget"), (PDIRECT3DSURFACE9, "pDestSurface")]),
|
||||
StdMethod(HRESULT, "GetFrontBufferData", [(UINT, "iSwapChain"), (PDIRECT3DSURFACE9, "pDestSurface")]),
|
||||
StdMethod(HRESULT, "StretchRect", [(PDIRECT3DSURFACE9, "pSourceSurface"), (ConstPointer(RECT), "pSourceRect"), (PDIRECT3DSURFACE9, "pDestSurface"), (ConstPointer(RECT), "pDestRect"), (D3DTEXTUREFILTERTYPE, "Filter")]),
|
||||
StdMethod(HRESULT, "ColorFill", [(PDIRECT3DSURFACE9, "pSurface"), (ConstPointer(RECT), "pRect"), (D3DCOLOR, "color")]),
|
||||
StdMethod(HRESULT, "CreateOffscreenPlainSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), (Pointer(HANDLE), "pSharedHandle")]),
|
||||
|
|
@ -279,7 +279,7 @@ IDirect3DStateBlock9.methods += [
|
|||
|
||||
IDirect3DSwapChain9.methods += [
|
||||
StdMethod(HRESULT, "Present", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion"), (D3DPRESENT, "dwFlags")]),
|
||||
StdMethod(HRESULT, "GetFrontBufferData", [(PDIRECT3DSURFACE9, "pDestSurface")], sideeffects=False),
|
||||
StdMethod(HRESULT, "GetFrontBufferData", [(PDIRECT3DSURFACE9, "pDestSurface")]),
|
||||
StdMethod(HRESULT, "GetBackBuffer", [(UINT, "iBackBuffer"), (D3DBACKBUFFER_TYPE, "Type"), Out(Pointer(PDIRECT3DSURFACE9), "ppBackBuffer")]),
|
||||
StdMethod(HRESULT, "GetRasterStatus", [Out(Pointer(D3DRASTER_STATUS), "pRasterStatus")], sideeffects=False),
|
||||
StdMethod(HRESULT, "GetDisplayMode", [Out(Pointer(D3DDISPLAYMODE), "pMode")], sideeffects=False),
|
||||
|
|
@ -383,7 +383,7 @@ IDirect3DQuery9.methods += [
|
|||
StdMethod(D3DQUERYTYPE, "GetType", [], sideeffects=False),
|
||||
StdMethod(DWORD, "GetDataSize", [], sideeffects=False),
|
||||
StdMethod(HRESULT, "Issue", [(D3DISSUE, "dwIssueFlags")]),
|
||||
StdMethod(HRESULT, "GetData", [Out(Blob(Void, "dwSize"), "pData"), (DWORD, "dwSize"), (D3DGETDATA, "dwGetDataFlags")], sideeffects=False),
|
||||
StdMethod(HRESULT, "GetData", [Out(D3DQUERYDATA, "pData"), (DWORD, "dwSize"), (D3DGETDATA, "dwGetDataFlags")], sideeffects=False),
|
||||
]
|
||||
|
||||
IDirect3D9Ex.methods += [
|
||||
|
|
|
|||
|
|
@ -979,23 +979,6 @@ D3DRASTER_STATUS = Struct("D3DRASTER_STATUS", [
|
|||
(UINT, "ScanLine"),
|
||||
])
|
||||
|
||||
D3DQUERYTYPE = Enum("D3DQUERYTYPE", [
|
||||
"D3DQUERYTYPE_VCACHE",
|
||||
"D3DQUERYTYPE_RESOURCEMANAGER",
|
||||
"D3DQUERYTYPE_VERTEXSTATS",
|
||||
"D3DQUERYTYPE_EVENT",
|
||||
"D3DQUERYTYPE_OCCLUSION",
|
||||
"D3DQUERYTYPE_TIMESTAMP",
|
||||
"D3DQUERYTYPE_TIMESTAMPDISJOINT",
|
||||
"D3DQUERYTYPE_TIMESTAMPFREQ",
|
||||
"D3DQUERYTYPE_PIPELINETIMINGS",
|
||||
"D3DQUERYTYPE_INTERFACETIMINGS",
|
||||
"D3DQUERYTYPE_VERTEXTIMINGS",
|
||||
"D3DQUERYTYPE_PIXELTIMINGS",
|
||||
"D3DQUERYTYPE_BANDWIDTHTIMINGS",
|
||||
"D3DQUERYTYPE_CACHEUTILIZATION",
|
||||
])
|
||||
|
||||
D3DISSUE = Flags(DWORD, [
|
||||
"D3DISSUE_END",
|
||||
"D3DISSUE_BEGIN",
|
||||
|
|
@ -1068,6 +1051,23 @@ D3DDEVINFO_D3D9CACHEUTILIZATION = Struct("D3DDEVINFO_D3D9CACHEUTILIZATION", [
|
|||
(FLOAT, "PostTransformVertexCacheHitRate"),
|
||||
])
|
||||
|
||||
D3DQUERYTYPE, D3DQUERYDATA = EnumPolymorphic("D3DQUERYTYPE", "_this->GetType()", [
|
||||
("D3DQUERYTYPE_VCACHE", Pointer(D3DDEVINFO_VCACHE)),
|
||||
("D3DQUERYTYPE_RESOURCEMANAGER", Pointer(D3DDEVINFO_RESOURCEMANAGER)),
|
||||
("D3DQUERYTYPE_VERTEXSTATS", Pointer(D3DDEVINFO_D3DVERTEXSTATS)),
|
||||
("D3DQUERYTYPE_EVENT", Pointer(BOOL)),
|
||||
("D3DQUERYTYPE_OCCLUSION", Pointer(DWORD)),
|
||||
("D3DQUERYTYPE_TIMESTAMP", Pointer(UINT64)),
|
||||
("D3DQUERYTYPE_TIMESTAMPDISJOINT", Pointer(BOOL)),
|
||||
("D3DQUERYTYPE_TIMESTAMPFREQ", Pointer(UINT64)),
|
||||
("D3DQUERYTYPE_PIPELINETIMINGS", Pointer(D3DDEVINFO_D3D9PIPELINETIMINGS)),
|
||||
("D3DQUERYTYPE_INTERFACETIMINGS", Pointer(D3DDEVINFO_D3D9INTERFACETIMINGS)),
|
||||
("D3DQUERYTYPE_VERTEXTIMINGS", Pointer(D3DDEVINFO_D3D9STAGETIMINGS)),
|
||||
("D3DQUERYTYPE_PIXELTIMINGS", Pointer(D3DDEVINFO_D3D9STAGETIMINGS)),
|
||||
("D3DQUERYTYPE_BANDWIDTHTIMINGS", Pointer(D3DDEVINFO_D3D9BANDWIDTHTIMINGS)),
|
||||
("D3DQUERYTYPE_CACHEUTILIZATION", Pointer(D3DDEVINFO_D3D9CACHEUTILIZATION)),
|
||||
], Blob(Void, "dwSize"), False)
|
||||
|
||||
D3DCOMPOSERECTSOP = Enum("D3DCOMPOSERECTSOP", [
|
||||
"D3DCOMPOSERECTS_COPY",
|
||||
"D3DCOMPOSERECTS_OR",
|
||||
|
|
|
|||
|
|
@ -1376,7 +1376,7 @@ glapi.addFunctions([
|
|||
GlFunction(Void, "glClearBufferData", [(GLenum, "target"), (GLenum, "internalformat"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(Void), "_glClearBufferData_size(format, type)"), "data")]),
|
||||
GlFunction(Void, "glClearBufferSubData", [(GLenum, "target"), (GLenum, "internalformat"), (GLintptr, "offset"), (GLsizeiptr, "size"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(Void), "_glClearBufferData_size(format, type)"), "data")]),
|
||||
GlFunction(Void, "glClearNamedBufferDataEXT", [(GLbuffer, "buffer"), (GLenum, "internalformat"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(Void), "_glClearBufferData_size(format, type)"), "data")]),
|
||||
GlFunction(Void, "glClearNamedBufferSubDataEXT", [(GLbuffer, "buffer"), (GLenum, "internalformat"), (GLenum, "format"), (GLenum, "type"), (GLsizeiptr, "offset"), (GLsizeiptr, "size"), (Blob(Const(Void), "_glClearBufferData_size(format, type)"), "data")]),
|
||||
GlFunction(Void, "glClearNamedBufferSubDataEXT", [(GLbuffer, "buffer"), (GLenum, "internalformat"), (GLsizeiptr, "offset"), (GLsizeiptr, "size"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(Void), "_glClearBufferData_size(format, type)"), "data")]),
|
||||
|
||||
# GL_ARB_compute_shader
|
||||
GlFunction(Void, "glDispatchCompute", [(GLuint, "num_groups_x"), (GLuint, "num_groups_y"), (GLuint, "num_groups_z")]),
|
||||
|
|
@ -3015,6 +3015,9 @@ glapi.addFunctions([
|
|||
# GL_NV_draw_texture
|
||||
GlFunction(Void, "glDrawTextureNV", [(GLtexture, "texture"), (GLsampler, "sampler"), (GLfloat, "x0"), (GLfloat, "y0"), (GLfloat, "x1"), (GLfloat, "y1"), (GLfloat, "z"), (GLfloat, "s0"), (GLfloat, "t0"), (GLfloat, "s1"), (GLfloat, "t1")]),
|
||||
|
||||
# GL_NV_framebuffer_blit
|
||||
GlFunction(Void, "glBlitFramebufferNV", [(GLint, "srcX0"), (GLint, "srcY0"), (GLint, "srcX1"), (GLint, "srcY1"), (GLint, "dstX0"), (GLint, "dstY0"), (GLint, "dstX1"), (GLint, "dstY1"), (GLbitfield_attrib, "mask"), (GLenum, "filter")]),
|
||||
|
||||
# GL_KTX_buffer_region
|
||||
# XXX: http://www.west.net/~brittain/3dsmax2.htm does not mention EXT suffix
|
||||
GlFunction(GLregion, "glNewBufferRegion", [(GLenum, "type")]),
|
||||
|
|
|
|||
66
src/apitrace/thirdparty/khronos/GL/glext.h
vendored
66
src/apitrace/thirdparty/khronos/GL/glext.h
vendored
|
|
@ -33,7 +33,7 @@ extern "C" {
|
|||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 24205 $ on $Date: 2013-11-26 04:42:27 -0800 (Tue, 26 Nov 2013) $
|
||||
** Khronos $Revision: 24756 $ on $Date: 2014-01-14 03:42:29 -0800 (Tue, 14 Jan 2014) $
|
||||
*/
|
||||
|
||||
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
|
||||
|
|
@ -53,7 +53,7 @@ extern "C" {
|
|||
#define GLAPI extern
|
||||
#endif
|
||||
|
||||
#define GL_GLEXT_VERSION 20131126
|
||||
#define GL_GLEXT_VERSION 20140114
|
||||
|
||||
/* Generated C header for:
|
||||
* API: gl
|
||||
|
|
@ -1485,7 +1485,7 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum atta
|
|||
typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
|
||||
typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
|
||||
typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
|
||||
typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask);
|
||||
typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
|
||||
GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
|
||||
|
|
@ -1505,7 +1505,7 @@ GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLui
|
|||
GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
|
||||
GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
|
||||
GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
|
||||
GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask);
|
||||
GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);
|
||||
#endif
|
||||
#endif /* GL_VERSION_3_2 */
|
||||
|
||||
|
|
@ -2144,6 +2144,10 @@ GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data)
|
|||
#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
|
||||
#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
|
||||
#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
|
||||
#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
|
||||
#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
|
||||
#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
|
||||
#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
|
||||
#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
|
||||
typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
|
||||
typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
|
||||
|
|
@ -6177,7 +6181,7 @@ typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintp
|
|||
typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
|
||||
typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
|
||||
typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
|
||||
typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data);
|
||||
typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
|
||||
typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
|
||||
typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
|
||||
typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
|
||||
|
|
@ -6433,7 +6437,7 @@ GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, G
|
|||
GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);
|
||||
GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
|
||||
GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
|
||||
GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data);
|
||||
GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
|
||||
GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param);
|
||||
GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
|
||||
GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
|
||||
|
|
@ -8122,6 +8126,52 @@ GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void
|
|||
#endif
|
||||
#endif /* GL_INTEL_parallel_arrays */
|
||||
|
||||
#ifndef GL_INTEL_performance_query
|
||||
#define GL_INTEL_performance_query 1
|
||||
#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
|
||||
#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
|
||||
#define GL_PERFQUERY_WAIT_INTEL 0x83FB
|
||||
#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
|
||||
#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
|
||||
#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
|
||||
#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
|
||||
#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
|
||||
#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
|
||||
#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
|
||||
#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
|
||||
#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
|
||||
#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
|
||||
#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
|
||||
#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
|
||||
#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
|
||||
#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
|
||||
#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
|
||||
#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
|
||||
#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
|
||||
typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
|
||||
typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
|
||||
typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
|
||||
typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
|
||||
typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
|
||||
typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
|
||||
typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
|
||||
typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
|
||||
typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
|
||||
typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
|
||||
GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
|
||||
GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
|
||||
GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
|
||||
GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
|
||||
GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
|
||||
GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
|
||||
GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
|
||||
GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
|
||||
GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
|
||||
#endif
|
||||
#endif /* GL_INTEL_performance_query */
|
||||
|
||||
#ifndef GL_MESAX_texture_stack
|
||||
#define GL_MESAX_texture_stack 1
|
||||
#define GL_TEXTURE_1D_STACK_MESAX 0x8759
|
||||
|
|
@ -9643,7 +9693,7 @@ typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void
|
|||
typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);
|
||||
typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
|
||||
typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
|
||||
typedef void (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
|
||||
typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
|
||||
typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
|
||||
typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
|
||||
typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
|
||||
|
|
@ -9654,7 +9704,7 @@ GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAdd
|
|||
GLAPI void APIENTRY glVDPAUFiniNV (void);
|
||||
GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
|
||||
GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
|
||||
GLAPI void APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
|
||||
GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
|
||||
GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
|
||||
GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
|
||||
GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
68
src/civetweb/CREDITS.md
Normal file
68
src/civetweb/CREDITS.md
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
# Civetweb Contributors
|
||||
|
||||
* Alex Kozlov
|
||||
* bel2125
|
||||
* celeron55
|
||||
* Daniel Oaks
|
||||
* F-Secure Corporation
|
||||
* Brian Spratke
|
||||
* HariKamath Kamath
|
||||
* Kimmo Mustonen
|
||||
* Morgan McGuire
|
||||
* No Face Press
|
||||
* Paul Sokolovsky
|
||||
* Thomas Davis
|
||||
* Toni Wilk
|
||||
* William Greathouse
|
||||
|
||||
# Mongoose Contributors
|
||||
The following users contributed to the original Mongoose release between 2010 and 2013. Civitweb is based on the Mongoose code. This list was generated from the Mongoose GIT logs. There is no record for contributors prior to 2010.
|
||||
|
||||
* Sergey Lyubka
|
||||
* Arnout Vandecappelle (Essensium/Mind)
|
||||
* Benoît Amiaux
|
||||
* Cody Hanson
|
||||
* Colin Leitner
|
||||
* Daniel Oaks
|
||||
* Eric Bakan
|
||||
* Erik Oomen
|
||||
* Filipp Kovalev
|
||||
* Ger Hobbelt
|
||||
* Hendrik Polczynski
|
||||
* Henrique Mendonça
|
||||
* Igor Okulist
|
||||
* Jay
|
||||
* Joe Mucchiello
|
||||
* John Safranek
|
||||
* Joseph Mainwaring
|
||||
* José Miguel Gonçalves
|
||||
* KIU Shueng Chuan
|
||||
* Katerina Blinova
|
||||
* Konstantin Sorokin
|
||||
* Marin Atanasov Nikolov
|
||||
* Matt Healy
|
||||
* Miguel Morales
|
||||
* Mikhail Nikalyukin
|
||||
* MikieMorales
|
||||
* Mitch Hendrickson
|
||||
* Nigel Stewart
|
||||
* Pavel
|
||||
* Pavel Khlebovich
|
||||
* Rogerz Zhang
|
||||
* Sebastian Reinhard
|
||||
* Stefan Doehla
|
||||
* Thileepan
|
||||
* abadc0de
|
||||
* arvidn
|
||||
* bick
|
||||
* ff.feng
|
||||
* jmucchiello
|
||||
* jwang
|
||||
* lsm
|
||||
* migal
|
||||
* mlamb
|
||||
* nullable.type
|
||||
* shantanugadgil
|
||||
* tayS
|
||||
* test
|
||||
* valenok
|
||||
113
src/civetweb/LICENSE.md
Normal file
113
src/civetweb/LICENSE.md
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
ALL LICENSES
|
||||
=====
|
||||
|
||||
This document includes several copyright licenses for different
|
||||
aspects of the software. Not all licenses may apply depending
|
||||
on the features chosen.
|
||||
|
||||
Civetweb License
|
||||
-----
|
||||
|
||||
### Included with all features.
|
||||
|
||||
> Copyright (c) 2004-2013 Sergey Lyubka
|
||||
>
|
||||
> Copyright (c) 2013 No Face Press, LLC (Thomas Davis)
|
||||
>
|
||||
> Copyright (c) 2013 F-Secure Corporation
|
||||
>
|
||||
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
> of this software and associated documentation files (the "Software"), to deal
|
||||
> in the Software without restriction, including without limitation the rights
|
||||
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
> copies of the Software, and to permit persons to whom the Software is
|
||||
> furnished to do so, subject to the following conditions:
|
||||
>
|
||||
> The above copyright notice and this permission notice shall be included in
|
||||
> all copies or substantial portions of the Software.
|
||||
>
|
||||
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
> THE SOFTWARE.
|
||||
|
||||
Lua License
|
||||
------
|
||||
|
||||
### Included only if built with Lua support.
|
||||
|
||||
http://www.lua.org/license.html
|
||||
|
||||
> Copyright <20> 1994-2013 Lua.org, PUC-Rio.
|
||||
> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
>
|
||||
> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
>
|
||||
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
SQLite3 License
|
||||
------
|
||||
|
||||
### Included only if built with Lua support.
|
||||
|
||||
http://www.sqlite.org/copyright.html
|
||||
|
||||
> 2001 September 15
|
||||
>
|
||||
> The author disclaims copyright to this source code. In place of
|
||||
> a legal notice, here is a blessing:
|
||||
>
|
||||
> May you do good and not evil.
|
||||
> May you find forgiveness for yourself and forgive others.
|
||||
> May you share freely, never taking more than you give.
|
||||
|
||||
lsqlite3 License
|
||||
------
|
||||
|
||||
### Included only if built with Lua support.
|
||||
|
||||
> lsqlite3
|
||||
> Copyright (C) 2002-2007 Tiago Dionizio, Doug Currie
|
||||
> All rights reserved.
|
||||
> Author : Tiago Dionizio <tiago.dionizio@ist.utl.pt>
|
||||
> Author : Doug Currie <doug.currie@alum.mit.edu>
|
||||
> Library : lsqlite3 - a SQLite 3 database binding for Lua 5
|
||||
>
|
||||
> Permission is hereby granted, free of charge, to any person obtaining
|
||||
> a copy of this software and associated documentation files (the
|
||||
> "Software"), to deal in the Software without restriction, including
|
||||
> without limitation the rights to use, copy, modify, merge, publish,
|
||||
> distribute, sublicense, and/or sell copies of the Software, and to
|
||||
> permit persons to whom the Software is furnished to do so, subject to
|
||||
> the following conditions:
|
||||
>
|
||||
> The above copyright notice and this permission notice shall be
|
||||
> included in all copies or substantial portions of the Software.
|
||||
>
|
||||
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Lua File System License
|
||||
------
|
||||
|
||||
### Included only if built with Lua support.
|
||||
|
||||
http://keplerproject.github.io/luafilesystem/license.html
|
||||
|
||||
> Copyright © 2003 Kepler Project.
|
||||
>
|
||||
> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
>
|
||||
> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
>
|
||||
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
102
src/civetweb/README.md
Normal file
102
src/civetweb/README.md
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
 Civetweb
|
||||
=======
|
||||
|
||||
There is a new home!!!
|
||||
-----------------
|
||||
https://github.com/bel2125/civetweb
|
||||
Bel has been taking the lead on Civetweb, so teh official repositiory
|
||||
is being moved under his control for ease of maintanence.
|
||||
|
||||
Project Mission
|
||||
-----------------
|
||||
|
||||
Project mission is to provide easy to use, powerful, C/C++ embeddable web server with optional CGI, SSL and Lua support.
|
||||
Civetweb has a MIT license so you can innovate without restrictions.
|
||||
|
||||
Where to find the official version?
|
||||
-----------------------------------
|
||||
|
||||
End users can download Civetweb at SourceForge
|
||||
https://sourceforge.net/projects/civetweb/
|
||||
|
||||
Developers can contribute to CivetWeb via GitHub
|
||||
https://github.com/bel2125/civetweb
|
||||
|
||||
Trouble tickets should be filed on GitHub
|
||||
https://github.com/bel2125/civetweb/issues
|
||||
|
||||
Discussion group is at Google Groups
|
||||
https://groups.google.com/d/forum/civetweb
|
||||
|
||||
Quick start documentation
|
||||
--------------------------
|
||||
|
||||
- [docs/Installing.md](https://github.com/bel2125/civetweb/blob/master/docs/Installing.md) - Install Guide
|
||||
- [docs/UserManual.md](https://github.com/bel2125/civetweb/blob/master/docs/UserManual.md) - End User Guide
|
||||
- [docs/Building.md](https://github.com/bel2125/civetweb/blob/master/docs/Building.md) - Buildiing the Server Quick Start
|
||||
- [docs/Embedding.md](https://github.com/bel2125/civetweb/blob/master/docs/Embedding.md) - Embedding Quick Start
|
||||
- [RELEASE_NOTES.md](https://github.com/bel2125/civetweb/blob/master/RELEASE_NOTES.md) - Release Notes
|
||||
- [LICENSE.md](https://github.com/bel2125/civetweb/blob/master/LICENSE.md) - Copyright License
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
Civetweb keeps the balance between functionality and
|
||||
simplicity by carefully selected list of features:
|
||||
|
||||
- Liberal, commercial-friendly, permissive,
|
||||
[MIT license](http://en.wikipedia.org/wiki/MIT_License)
|
||||
- Free from copy-left licenses, like GPL, because you should innovate without restrictions.
|
||||
- Based on [Mongoose](https://code.google.com/p/mongoose/)
|
||||
- Works on Windows, Mac, UNIX, iPhone, Android, Buildroot, and many other platforms
|
||||
- Scripting and database support (Lua Server Pages + Sqlite
|
||||
which provides ready to go, powerful web development platform in
|
||||
one single-click executable with **no dependencies**: forget LAMP!
|
||||
- Support for CGI, SSL, SSI, Digest (MD5) authorization, Websocket, WEbDAV
|
||||
- Resumed download, URL rewrite, file blacklist, IP-based ACL, Windows service
|
||||
- Download speed limit based on client subnet or URI pattern
|
||||
- Simple and clean embedding API,
|
||||
The source is in single file
|
||||
to make things easy. Embedding examples included.
|
||||
- HTTP client capable of sending arbitrary HTTP/HTTPS requests
|
||||
|
||||
|
||||
### Other optionally included software
|
||||
|
||||
<a href="http://lua.org">
|
||||

|
||||
</a>
|
||||
<a href="http://sqlite.org">
|
||||

|
||||
</a>
|
||||
|
||||
Support
|
||||
-------
|
||||
|
||||
The original Mongoose project is recommended if support is needed. However,
|
||||
this is very easy to install and use.
|
||||
|
||||
Contributions
|
||||
---------------
|
||||
|
||||
Contributions are welcome provided all contributions carry the MIT license.
|
||||
|
||||
DO NOT APPLY fixes copied from Mongoose to this project to prevent GPL tainting.
|
||||
|
||||
### Author
|
||||
|
||||
The original Author was Sergey Lyubka. He still controls the original
|
||||
Mongoose project. However, he has changed or said he would
|
||||
change licenses after writing and distributing the original code this
|
||||
project is based on.
|
||||
|
||||
Using this project ensures the MIT licenses terms are applied and
|
||||
GPL cannot be imposed on any of this code as long as it is sourced from
|
||||
here.
|
||||
|
||||
For the latest and greatest code and features, please use the Mongoose
|
||||
code from Sergey Lyubka. However, doing so will require adherence to
|
||||
the new licenses.
|
||||
|
||||
This project ensures that GPL license cannot be applied to this code.
|
||||
This code will remain free with the MIT license protection.
|
||||
181
src/civetweb/RELEASE_NOTES.md
Normal file
181
src/civetweb/RELEASE_NOTES.md
Normal file
|
|
@ -0,0 +1,181 @@
|
|||
Release Notes v1.6 (Under Development)
|
||||
===
|
||||
### Objectives: *???*
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
- Win32: Replace dll.def file by export macros in civetweb.h (CSTAJ)
|
||||
- Base64 encode and decode functions for Lua (bel)
|
||||
- Support pre-loaded files for the Lua environment (bel)
|
||||
- Server should check the nonce for http digest access authentication (bel)
|
||||
- Hide read-only flag in file dialogs opened by the Edit Settings dialog for the Windows executable (bel)
|
||||
- Add all functions to dll.def, that are in the header (bel)
|
||||
- Added Lua extensions: send_file, get_var, get_mime_type, get_cookie, url_decode, url_encode (bel)
|
||||
- mg_set_request_handler() mod to use pattern (bel, Patch from Toni Wilk)
|
||||
- Solved, tested and documented SSL support for Windows (bel)
|
||||
- Fixed: select for Linux needs the nfds parameter set correctly (bel)
|
||||
- Add methods for returning the ports civetweb is listening on (keithel)
|
||||
- Fixes for Lua Server Pages, as described within the google groups thread. (bel)
|
||||
- Added support for plain Lua Scripts, and an example script. (bel)
|
||||
- A completely new, and more illustrative websocket example for C. (bel)
|
||||
- An implementation of "Websocket for Lua", which allows to configure an optional websocket_root directory, incl. URL rewriting. Added an example. The Lua interface may change if the threading model changes. (bel)
|
||||
- Update of SQLite3 to 3.8.1. (bel)
|
||||
- Add "date" header field to replies, according to the requirements of RFC 2616 (the HTTP standard), Section 14.18 (bel)
|
||||
- Fix websocket long pull (celeron55)
|
||||
- Updated API documentation (Alex Kozlov)
|
||||
- Fixed Posix locking functions for Windows (bel2125)
|
||||
- Updated version number
|
||||
|
||||
Release Notes v1.5
|
||||
===
|
||||
### Objectives: *Bug fixes and updates, repository restoration*
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
- Corrected bad mask flag/opcode passing to websocket callback (William Greathouse)
|
||||
- Moved CEVITWEB_VERSION define into civetweb.h
|
||||
- Added new simple zip deployment build for Windows.
|
||||
- Removed windows install package build.
|
||||
- Fixes page violation in mod_lua.inl (apkbox)
|
||||
- Use C style comments to enable compiling most of civetweb with -ansi. (F-Secure Corporation)
|
||||
- Allow directories with non ASCII characters in Windows in UTF-8 encoded (bel2125)
|
||||
- Added Lua File System support (bel2125)
|
||||
- Added mongoose history back in repository thanks to (Paul Sokolovsky)
|
||||
- Fixed keep alive (bel2125)
|
||||
- Updated of MIME types (bel2125)
|
||||
- Updated lsqlite (bel2125)
|
||||
- Fixed master thread priority (bel2125)
|
||||
- Fixed IPV6 defines under Windowe (grenclave)
|
||||
- Fixed potential dead lock in connection_close() (Morgan McGuire)
|
||||
- Added WebSocket example using asynchronous server messages (William Greathouse)
|
||||
- Fixed the getcwd() warning (William Greathouse)
|
||||
- Implemented the connection_close() callback (William Greathouse)
|
||||
- Fixed support URL's in civetweb.c (Daniel Oaks)
|
||||
- Allow port number to be zero to use a random free port (F-Secure Corporation)
|
||||
- Wait for threads to finish when stopping for a clean shutdown (F-Secure Corporation)
|
||||
- More static analysis fixes against Coverity tool (F-Secure Corporation)
|
||||
- Travis automated build testing support added (Daniel Oaks)
|
||||
- Updated version numbers.
|
||||
- Added contributor credits file.
|
||||
|
||||
Release Notes v1.4
|
||||
===
|
||||
### Objectives: *New URI handler interface, feature enhancements, C++ extensions*
|
||||
The main idea behind this release is to bring about API consistency. All changes
|
||||
are backward compatible and have been kept to a minimum.
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
- Added mg_set_request_handler() which provides a URI mapping for callbacks.
|
||||
This is a new alternative to overriding callbacks.begin_request.
|
||||
- Externalized mg_url_encode()
|
||||
- Externalized mg_strncasecmp() for utiliy
|
||||
- Added CivetServer::getParam methods
|
||||
- Added CivetServer::urlDecode methods
|
||||
- Added CivetServer::urlEncode methods
|
||||
- Dealt with compiler warnings and some static analysis hits.
|
||||
- Added mg_get_var2() to parse repeated query variables
|
||||
- Externalized logging function cry() as mg_cry()
|
||||
- Added CivetServer::getCookie method (Hariprasad Kamath)
|
||||
- Added CivetServer::getHeader method (Hariprasad Kamath)
|
||||
- Added new basic C embedding example
|
||||
- Conformed source files to UNIX line endings for consistency.
|
||||
- Unified the coding style to improve reability.
|
||||
|
||||
Release Notes v1.3
|
||||
===
|
||||
### Objectives: *Buildroot Integration*
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
- Made option to put initial HTMLDIR in a different place
|
||||
- Validated build without SQLITE3 large file support
|
||||
- Updated documentation
|
||||
- Updated Buildroot config example
|
||||
|
||||
Release Notes v1.2
|
||||
===
|
||||
### Objectives: *Installation Improvements, buildroot, cross compile support*
|
||||
The objective of this release is to make installation seamless.
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
- Create an installation guide
|
||||
- Created both 32 and 64 bit windows installations
|
||||
- Added install for windows distribution
|
||||
- Added 64 bit build profiles for VS 2012.
|
||||
- Created a buildroot patch
|
||||
- Updated makefile to better support buildroot
|
||||
- Made doc root and ports configurable during the make install.
|
||||
- Updated Linux Install
|
||||
- Updated OS X Package
|
||||
- Improved install scheme with welcome web page
|
||||
|
||||
Known Issues
|
||||
-----
|
||||
|
||||
- The prebuilt Window's version requires [Visual C++ Redistributable for Visual Studio 2012](http://www.microsoft.com/en-us/download/details.aspx?id=30679)
|
||||
|
||||
Release Notes v1.1
|
||||
===
|
||||
### Objectives: *Build, Documentation, License Improvements*
|
||||
The objective of this release is to establish a maintable code base, ensure MIT license rights and improve usability and documentation.
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
- Reorangized build directories to make them more intuitive
|
||||
- Added new build rules for lib and slib with option to include C++ class
|
||||
- Upgraded Lua from 5.2.1 to 5.2.2
|
||||
- Added fallback configuration file path for Linux systems.
|
||||
+ Good for having a system wide default configuration /usr/local/etc/civetweb.conf
|
||||
- Added new C++ abstraction class CivetServer
|
||||
- Added thread safety for and fixed websocket defects (Morgan McGuire)
|
||||
- Created PKGBUILD to use Arch distribution (Daniel Oaks)
|
||||
- Created new documentation on Embeddeding, Building and yaSSL (see docs/).
|
||||
- Updated License file to include all licenses.
|
||||
- Replaced MD5 implementation due to questionable license.
|
||||
+ This requires new source file md5.inl
|
||||
- Changed UNIX/OSX build to conform to common practices.
|
||||
+ Supports build, install and clean rules.
|
||||
+ Supports cross compiling
|
||||
+ Features can be chosen in make options
|
||||
- Moved Cocoa/OSX build and packaging to a separate file.
|
||||
+ This actually a second build variant for OSX.
|
||||
+ Removed yaSSL from the OSX build, not needed.
|
||||
- Added new Visual Studio projects for Windows builds.
|
||||
+ Removed Windows support from Makefiles
|
||||
+ Provided additional, examples with Lua, and another with yaSSL.
|
||||
- Changed Zombie Reaping policy to not ignore SIGCHLD.
|
||||
+ The previous method caused trouble in applciations that spawn children.
|
||||
|
||||
Known Issues
|
||||
-----
|
||||
|
||||
- Build support for VS6 and some other has been deprecated.
|
||||
+ This does not impact embedded programs, just the stand-alone build.
|
||||
+ The old Makefile was renamed to Makefile.deprecated.
|
||||
+ This is partcially do to lack fo testing.
|
||||
+ Need to find out what is actually in demand.
|
||||
- Build changes may impact current users.
|
||||
+ As with any change of this type, changes may impact some users.
|
||||
|
||||
Release Notes v1.0
|
||||
===
|
||||
|
||||
### Objectives: *MIT License Preservation, Rebranding*
|
||||
The objective of this release is to establish a version of the Mongoose software distribution that still retains the MIT license.
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
- Renamed Mongoose to Civetweb in the code and documentation.
|
||||
- Replaced copyrighted images with new images
|
||||
- Created a new code respository at https://github.com/sunsetbrew/civetweb
|
||||
- Created a distribution site at https://sourceforge.net/projects/civetweb/
|
||||
- Basic build testing
|
||||
481
src/civetweb/UserManual.md
Normal file
481
src/civetweb/UserManual.md
Normal file
|
|
@ -0,0 +1,481 @@
|
|||
|
||||
Overview
|
||||
=====
|
||||
|
||||
Civetweb is small and easy to use web server. It is self-contained, and does
|
||||
not require any external software to run.
|
||||
|
||||
Installation
|
||||
----
|
||||
|
||||
### Some Windows users may be the install the
|
||||
[Visual C++ Redistributable for Visual Studio 2012](http://www.microsoft.com/en-us/download/details.aspx?id=30679)
|
||||
|
||||
On Windows, civetweb iconifies itself to the system tray icon when started.
|
||||
Right-click on the icon pops up a menu, where it is possible to stop
|
||||
civetweb, or configure it, or install it as Windows service. The easiest way
|
||||
to share a folder on Windows is to copy `civetweb.exe` to a folder,
|
||||
double-click the exe, and launch a browser at
|
||||
[http://localhost:8080](http://localhost:8080). Note that 'localhost' should
|
||||
be changed to a machine's name if a folder is accessed from other computer.
|
||||
|
||||
On UNIX and Mac, civetweb is a command line utility. Running `civetweb` in
|
||||
terminal, optionally followed by configuration parameters
|
||||
(`civetweb [OPTIONS]`) or configuration file name
|
||||
(`civetweb [config_file_name]`) starts the
|
||||
web server. Civetweb does not detach from terminal. Pressing `Ctrl-C` keys
|
||||
would stop the server.
|
||||
|
||||
When started, civetweb first searches for the configuration file.
|
||||
If configuration file is specified explicitly in the command line, i.e.
|
||||
`civetweb path_to_config_file`, then specified configuration file is used.
|
||||
Otherwise, civetweb would search for file `civetweb.conf` in the same directory
|
||||
where binary is located, and use it. Configuration file can be absent.
|
||||
|
||||
|
||||
Configuration file is a sequence of lines, each line containing
|
||||
command line argument name and it's value. Empty lines, and lines beginning
|
||||
with `#`, are ignored. Here is the example of `civetweb.conf` file:
|
||||
|
||||
document_root c:\www
|
||||
listening_ports 8080,8043s
|
||||
ssl_certificate c:\civetweb\ssl_cert.pem
|
||||
|
||||
When configuration file is processed, civetweb process command line arguments,
|
||||
if they are specified. Command line arguments therefore can override
|
||||
configuration file settings. Command line arguments must start with `-`.
|
||||
For example, if `civetweb.conf` has line
|
||||
`document_root /var/www`, and civetweb has been started as
|
||||
`civetweb -document_root /etc`, then `/etc` directory will be served as
|
||||
document root, because command line options take priority over
|
||||
configuration file. Configuration options section below provide a good
|
||||
overview of Civetweb features.
|
||||
|
||||
Note that configuration options on the command line must start with `-`,
|
||||
but their names are the same as in the config file. All option names are
|
||||
listed in the next section. Thus, the following two setups are equivalent:
|
||||
|
||||
# Using command line arguments
|
||||
$ civetweb -listening_ports 1234 -document_root /var/www
|
||||
|
||||
# Using config file
|
||||
$ cat civetweb.conf
|
||||
listening_ports 1234
|
||||
document_root /var/www
|
||||
$ civetweb
|
||||
|
||||
Civetweb can also be used to modify `.htpasswd` passwords file:
|
||||
|
||||
civetweb -A <htpasswd_file> <realm> <user> <passwd>
|
||||
|
||||
Unlike other web servers, civetweb does not require CGI scripts be located in
|
||||
a special directory. CGI scripts can be anywhere. CGI (and SSI) files are
|
||||
recognized by the file name pattern. Civetweb uses shell-like glob
|
||||
patterns. Pattern match starts at the beginning of the string, so essentially
|
||||
patterns are prefix patterns. Syntax is as follows:
|
||||
|
||||
** Matches everything
|
||||
* Matches everything but slash character, '/'
|
||||
? Matches any character
|
||||
$ Matches the end of the string
|
||||
| Matches if pattern on the left side or the right side matches.
|
||||
|
||||
All other characters in the pattern match themselves. Examples:
|
||||
|
||||
**.cgi$ Any string that ends with .cgi
|
||||
/foo Any string that begins with /foo
|
||||
**a$|**b$ Any string that ends with a or b
|
||||
|
||||
# Configuration Options
|
||||
|
||||
Below is a list of configuration options Civetweb understands. Every option
|
||||
is followed by it's default value. If default value is not present, then
|
||||
it is empty.
|
||||
|
||||
### cgi_pattern `**.cgi$|**.pl$|**.php$`
|
||||
All files that match `cgi_pattern` are treated as CGI files. Default pattern
|
||||
allows CGI files be anywhere. To restrict CGIs to a certain directory,
|
||||
use `/path/to/cgi-bin/**.cgi` as pattern. Note that full file path is
|
||||
matched against the pattern, not the URI.
|
||||
|
||||
### cgi_environment
|
||||
Extra environment variables to be passed to the CGI script in
|
||||
addition to standard ones. The list must be comma-separated list
|
||||
of name=value pairs, like this: `VARIABLE1=VALUE1,VARIABLE2=VALUE2`.
|
||||
|
||||
### put\_delete\_auth\_file
|
||||
Passwords file for PUT and DELETE requests. Without it, PUT and DELETE requests
|
||||
will fail.
|
||||
|
||||
### cgi_interpreter
|
||||
Path to an executable to use as CGI interpreter for __all__ CGI scripts
|
||||
regardless script extension. If this option is not set (which is a default),
|
||||
Civetweb looks at first line of a CGI script,
|
||||
[shebang line](http://en.wikipedia.org/wiki/Shebang_(Unix\)), for an interpreter.
|
||||
|
||||
For example, if both PHP and perl CGIs are used, then
|
||||
`#!/path/to/php-cgi.exe` and `#!/path/to/perl.exe` must be first lines of the
|
||||
respective CGI scripts. Note that paths should be either full file paths,
|
||||
or file paths relative to the current working directory of civetweb server.
|
||||
If civetweb is started by mouse double-click on Windows, current working
|
||||
directory is a directory where civetweb executable is located.
|
||||
|
||||
If all CGIs use the same interpreter, for example they are all PHP, then
|
||||
`cgi_interpreter` can be set to the path to `php-cgi.exe` executable and
|
||||
shebang line in the CGI scripts can be omitted.
|
||||
Note that PHP scripts must use `php-cgi.exe` executable, not `php.exe`.
|
||||
|
||||
### protect_uri
|
||||
Comma separated list of URI=PATH pairs, specifying that given
|
||||
URIs must be protected with respected password files. Paths must be full
|
||||
file paths.
|
||||
|
||||
### authentication_domain `mydomain.com`
|
||||
Authorization realm used in `.htpasswd` authorization.
|
||||
|
||||
### ssi_pattern `**.shtml$|**.shtm$`
|
||||
All files that match `ssi_pattern` are treated as SSI.
|
||||
|
||||
Server Side Includes (SSI) is a simple interpreted server-side scripting
|
||||
language which is most commonly used to include the contents of a file into
|
||||
a web page. It can be useful when it is desirable to include a common piece
|
||||
of code throughout a website, for example, headers and footers.
|
||||
|
||||
In order for a webpage to recognize an SSI-enabled HTML file, the filename
|
||||
should end with a special extension, by default the extension should be
|
||||
either `.shtml` or `.shtm`.
|
||||
|
||||
Unknown SSI directives are silently ignored by civetweb. Currently, two SSI
|
||||
directives are supported, `<!--#include ...>` and
|
||||
`<!--#exec "command">`. Note that `<!--#include ...>` directive supports
|
||||
three path specifications:
|
||||
|
||||
<!--#include virtual="path"> Path is relative to web server root
|
||||
<!--#include abspath="path"> Path is absolute or relative to
|
||||
web server working dir
|
||||
<!--#include file="path">, Path is relative to current document
|
||||
<!--#include "path">
|
||||
|
||||
The `include` directive may be used to include the contents of a file or the
|
||||
result of running a CGI script. The `exec` directive is used to execute a
|
||||
command on a server, and show command's output. Example:
|
||||
|
||||
<!--#exec "ls -l" -->
|
||||
|
||||
For more information on Server Side Includes, take a look at the Wikipedia:
|
||||
[Server Side Includes](http://en.wikipedia.org/wiki/Server_Side_Includes)
|
||||
|
||||
### throttle
|
||||
Limit download speed for clients. `throttle` is a comma-separated
|
||||
list of key=value pairs, where key could be:
|
||||
|
||||
* limit speed for all connections
|
||||
x.x.x.x/mask limit speed for specified subnet
|
||||
uri_prefix_pattern limit speed for given URIs
|
||||
|
||||
The value is a floating-point number of bytes per second, optionally
|
||||
followed by a `k` or `m` character, meaning kilobytes and
|
||||
megabytes respectively. A limit of 0 means unlimited rate. The
|
||||
last matching rule wins. Examples:
|
||||
|
||||
*=1k,10.0.0.0/8=0 limit all accesses to 1 kilobyte per second,
|
||||
but give connections from 10.0.0.0/8 subnet
|
||||
unlimited speed
|
||||
|
||||
/downloads/=5k limit accesses to all URIs in `/downloads/` to
|
||||
5 kilobytes per second. All other accesses are unlimited
|
||||
|
||||
### access\_log\_file
|
||||
Path to a file for access logs. Either full path, or relative to current
|
||||
working directory. If absent (default), then accesses are not logged.
|
||||
|
||||
### enable\_directory\_listing `yes`
|
||||
Enable directory listing, either `yes` or `no`.
|
||||
|
||||
### error\_log\_file
|
||||
Path to a file for error logs. Either full path, or relative to current
|
||||
working directory. If absent (default), then errors are not logged.
|
||||
|
||||
### global\_auth\_file
|
||||
Path to a global passwords file, either full path or relative to the current
|
||||
working directory. If set, per-directory `.htpasswd` files are ignored,
|
||||
and all requests are authorized against that file.
|
||||
|
||||
The file has to include the realm set through `authentication_domain` and the password in digest format:
|
||||
|
||||
user:realm:digest
|
||||
test:test.com:ce0220efc2dd2fad6185e1f1af5a4327
|
||||
|
||||
(e.g. use [this generator](http://www.askapache.com/online-tools/htpasswd-generator))
|
||||
|
||||
### index_files `index.html,index.htm,index.cgi,index.shtml,index.php`
|
||||
Comma-separated list of files to be treated as directory index
|
||||
files.
|
||||
|
||||
In case built-in Lua support has been enabled, `index.lp,index.lsp,index.lua`
|
||||
are additional default files.
|
||||
|
||||
### enable\_keep\_alive `no`
|
||||
Enable connection keep alive, either `yes` or `no`.
|
||||
|
||||
Experimental feature. Allows clients to reuse TCP connection for
|
||||
subsequent HTTP requests, which improves performance.
|
||||
For this to work when using request handlers it's important to add the correct
|
||||
Content-Length HTTP header for each request. If this is forgotten the client
|
||||
will time out.
|
||||
|
||||
### access\_control\_list
|
||||
An Access Control List (ACL) allows restrictions to be put on the list of IP
|
||||
addresses which have access to the web server. In the case of the Civetweb
|
||||
web server, the ACL is a comma separated list of IP subnets, where each
|
||||
subnet is pre-pended by either a `-` or a `+` sign. A plus sign means allow,
|
||||
where a minus sign means deny. If a subnet mask is omitted, such as `-1.2.3.4`,
|
||||
this means to deny only that single IP address.
|
||||
|
||||
Subnet masks may vary from 0 to 32, inclusive. The default setting is to allow
|
||||
all accesses. On each request the full list is traversed, and
|
||||
the last match wins. Examples:
|
||||
|
||||
-0.0.0.0/0,+192.168/16 deny all accesses, only allow 192.168/16 subnet
|
||||
|
||||
To learn more about subnet masks, see the
|
||||
[Wikipedia page on Subnetwork](http://en.wikipedia.org/wiki/Subnetwork)
|
||||
|
||||
### extra\_mime\_types
|
||||
Extra mime types to recognize, in form `extension1=type1,exten-
|
||||
sion2=type2,...`. Extension must include dot. Example:
|
||||
`.cpp=plain/text,.java=plain/text`
|
||||
|
||||
### listening_ports `8080`
|
||||
Comma-separated list of ports to listen on. If the port is SSL, a
|
||||
letter `s` must be appended, for example, `80,443s` will open
|
||||
port 80 and port 443, and connections on port 443 will be SSL-ed.
|
||||
For non-SSL ports, it is allowed to append letter `r`, meaning 'redirect'.
|
||||
Redirect ports will redirect all their traffic to the first configured
|
||||
SSL port. For example, if `listening_ports` is `80r,443s`, then all
|
||||
HTTP traffic coming at port 80 will be redirected to HTTPS port 443.
|
||||
|
||||
It is possible to specify an IP address to bind to. In this case,
|
||||
an IP address and a colon must be pre-pended to the port number.
|
||||
For example, to bind to a loopback interface on port 80 and to
|
||||
all interfaces on HTTPS port 443, use `127.0.0.1:80,443s`.
|
||||
|
||||
### document_root `.`
|
||||
A directory to serve. By default, current directory is served. Current
|
||||
directory is commonly referenced as dot (`.`).
|
||||
|
||||
### ssl_certificate
|
||||
Path to SSL certificate file. This option is only required when at least one
|
||||
of the `listening_ports` is SSL. The file must be in PEM format,
|
||||
and it must have both private key and certificate, see for example
|
||||
[ssl_cert.pem](https://github.com/sunsetbrew/civetweb/blob/master/resources/ssl_cert.pem)
|
||||
A description how to create a certificate can be found in doc/OpenSSL.md
|
||||
|
||||
### num_threads `50`
|
||||
Number of worker threads. Civetweb handles each incoming connection in a
|
||||
separate thread. Therefore, the value of this option is effectively a number
|
||||
of concurrent HTTP connections Civetweb can handle.
|
||||
|
||||
### run\_as\_user
|
||||
Switch to given user credentials after startup. Usually, this option is
|
||||
required when civetweb needs to bind on privileged port on UNIX. To do
|
||||
that, civetweb needs to be started as root. But running as root is a bad idea,
|
||||
therefore this option can be used to drop privileges. Example:
|
||||
|
||||
civetweb -listening_ports 80 -run_as_user nobody
|
||||
|
||||
### url\_rewrite\_patterns
|
||||
Comma-separated list of URL rewrites in the form of
|
||||
`uri_pattern=file_or_directory_path`. When Civetweb receives the request,
|
||||
it constructs the file name to show by combining `document_root` and the URI.
|
||||
However, if the rewrite option is used and `uri_pattern` matches the
|
||||
requested URI, then `document_root` is ignored. Instead,
|
||||
`file_or_directory_path` is used, which should be a full path name or
|
||||
a path relative to the web server's current working directory. Note that
|
||||
`uri_pattern`, as all civetweb patterns, is a prefix pattern.
|
||||
|
||||
This makes it possible to serve many directories outside from `document_root`,
|
||||
redirect all requests to scripts, and do other tricky things. For example,
|
||||
to redirect all accesses to `.doc` files to a special script, do:
|
||||
|
||||
civetweb -url_rewrite_patterns **.doc$=/path/to/cgi-bin/handle_doc.cgi
|
||||
|
||||
Or, to imitate user home directories support, do:
|
||||
|
||||
civetweb -url_rewrite_patterns /~joe/=/home/joe/,/~bill=/home/bill/
|
||||
|
||||
### hide\_files\_patterns
|
||||
A pattern for the files to hide. Files that match the pattern will not
|
||||
show up in directory listing and return `404 Not Found` if requested. Pattern
|
||||
must be for a file name only, not including directory name. Example:
|
||||
|
||||
civetweb -hide_files_patterns secret.txt|even_more_secret.txt
|
||||
|
||||
### request\_timeout\_ms `30000`
|
||||
Timeout for network read and network write operations, in milliseconds.
|
||||
If client intends to keep long-running connection, either increase this value
|
||||
or use keep-alive messages.
|
||||
|
||||
### lua_preload_file
|
||||
This configuration option can be used to specify a Lua script file, which
|
||||
is executed before the actual web page script (Lua script, Lua server page
|
||||
or Lua websocket). It can be used to modify the Lua environment of all web
|
||||
page scripts, e.g., by loading additional libraries required by all scripts
|
||||
or to achieve backward compatibility by defining obsolete functions.
|
||||
|
||||
### lua_script_pattern `"**.lua$`
|
||||
A pattern for files that are interpreted as Lua scripts by the server.
|
||||
In contrast to Lua server pages, Lua scripts use plain Lua syntax.
|
||||
An example can be found in the test directory.
|
||||
|
||||
### lua_server_page_pattern `**.lp$|**.lsp$`
|
||||
Files matching this pattern are treated as Lua server pages.
|
||||
In contrast to Lua scripts, the content of a Lua server pages is delivered
|
||||
directly to the client. Lua script parts are delimited from the standard
|
||||
content by including them between <? and ?> tags.
|
||||
An example can be found in the test directory.
|
||||
|
||||
### websocket_root
|
||||
In case civetweb is built with Lua and websocket support, Lua scripts may
|
||||
be used for websockets as well. Since websockets use a different URL scheme
|
||||
(ws, wss) than other http pages (http, https), the Lua scripts used for
|
||||
websockets may also be served from a different directory. By default,
|
||||
the document_root is used as websocket_root as well.
|
||||
|
||||
|
||||
# Lua Scripts and Lua Server Pages
|
||||
Pre-built Windows and Mac civetweb binaries have built-in Lua scripting
|
||||
support as well as support for Lua Server Pages.
|
||||
|
||||
Lua scripts (default extension: *.lua) use plain Lua syntax.
|
||||
The body of the script file is not sent directly to the client,
|
||||
the Lua script must send header and content of the web page by calling
|
||||
the function mg.write(text).
|
||||
|
||||
Lua Server Pages (default extensions: *.lsp, *.lp) are html pages containing
|
||||
script elements similar to PHP, using the Lua programming language instead of
|
||||
PHP. Lua script elements must be enclosed in `<? ?>` blocks, and can appear
|
||||
anywhere on the page. Furthermore, Lua Server Pages offer the opportunity to
|
||||
insert the content of a variable by enclosing the Lua variable name in
|
||||
`<?= ?>` blocks, similar to PHP.
|
||||
For example, to print current weekday name and the URI of the current page,
|
||||
one can write:
|
||||
<p>
|
||||
<span>Today is:</span>
|
||||
<? mg.write(os.date("%A")) ?>
|
||||
</p>
|
||||
<p>
|
||||
URI is <?=mg.request_info.uri?>
|
||||
</p>
|
||||
|
||||
Lua is known for it's speed and small size. Civetweb uses Lua version 5.2.2,
|
||||
the documentation for it can be found at
|
||||
[Lua 5.2 reference manual](http://www.lua.org/manual/5.2/).
|
||||
|
||||
|
||||
Note that this example uses function `mg.write()`, which prints data to the
|
||||
web page. Using function `mg.write()` is the way to generate web content from
|
||||
inside Lua code. In addition to `mg.write()`, all standard library functions
|
||||
are accessible from the Lua code (please check reference manual for details),
|
||||
and also information about the request is available in `mg.request_info`
|
||||
object, like request method, all headers, etcetera.
|
||||
|
||||
[page2.lua](https://github.com/sunsetbrew/civetweb/blob/master/test/page2.lua)
|
||||
is an example for a plain Lua script.
|
||||
|
||||
[page2.lp](https://github.com/sunsetbrew/civetweb/blob/master/test/page2.lp)
|
||||
is an example for a Lua Server Page.
|
||||
|
||||
Both examples show the content of the `mg.request_info` object as the page
|
||||
content. Please refer to `struct mg_request_info` definition in
|
||||
[civetweb.h](https://github.com/sunsetbrew/civetweb/blob/master/include/civetweb.h)
|
||||
to see additional information on the elements of the `mg.request_info` object.
|
||||
|
||||
Civetweb also provides access to the [SQlite3 database](http://www.sqlite.org/)
|
||||
through the [LuaSQLite3 interface](http://lua.sqlite.org/index.cgi/doc/tip/doc/lsqlite3.wiki)
|
||||
in Lua. An example is given in
|
||||
[page.lp](https://github.com/sunsetbrew/civetweb/blob/master/test/page.lp).
|
||||
|
||||
|
||||
Civetweb exports the following functions to Lua:
|
||||
|
||||
mg (table):
|
||||
mg.read() -- reads a chunk from POST data, returns it as a string
|
||||
mg.write(str) -- writes string to the client
|
||||
mg.include(path) -- sources another Lua file
|
||||
mg.redirect(uri) -- internal redirect to a given URI
|
||||
mg.onerror(msg) -- error handler, can be overridden
|
||||
mg.version -- a string that holds Civetweb version
|
||||
mg.document_root -- a string that holds the document root directory
|
||||
mg.auth_domain -- a string that holds the HTTP authentication domain
|
||||
mg.get_var(str, varname) -- extract variable from (query) string
|
||||
mg.get_cookie(str, cookie) -- extract cookie from a string
|
||||
mg.get_mime_type(filename) -- get MIME type of a file
|
||||
mg.send_file(filename) -- send a file, including MIME type
|
||||
mg.url_encode(str) -- URL encode a string
|
||||
mg.url_decode(str) -- URL decode a string
|
||||
mg.base64_encode(str) -- BASE64 encode a string
|
||||
mg.base64_decode(str) -- BASE64 decode a string
|
||||
mg.md5(str) -- return the MD5 hash of a string
|
||||
mg.keep_alive(bool) -- allow/forbid to use http keep-alive for this request
|
||||
mg.request_info -- a table with the following request information
|
||||
.remote_addr -- IP address of the client as string
|
||||
.remote_port -- remote port number
|
||||
.server_port -- server port number
|
||||
.request_method -- HTTP method (e.g.: GET, POST)
|
||||
.http_version -- HTTP protocol version (e.g.: 1.1)
|
||||
.uri -- resource name
|
||||
.query_string -- query string if present, nil otherwise
|
||||
.script_name -- name of the Lua script
|
||||
.https -- true if accessed by https://, false otherwise
|
||||
.remote_user -- user name if authenticated, nil otherwise
|
||||
|
||||
connect (function):
|
||||
-- Connect to the remote TCP server. This function is an implementation
|
||||
-- of simple socket interface. It returns a socket object with three
|
||||
-- methods: send, recv, close, which are synchronous (blocking).
|
||||
-- connect() throws an exception on connection error.
|
||||
connect(host, port, use_ssl)
|
||||
|
||||
-- Example of using connect() interface:
|
||||
local host = 'code.google.com' -- IP address or domain name
|
||||
local ok, sock = pcall(connect, host, 80, 1)
|
||||
if ok then
|
||||
sock:send('GET /p/civetweb/ HTTP/1.0\r\n' ..
|
||||
'Host: ' .. host .. '\r\n\r\n')
|
||||
local reply = sock:recv()
|
||||
sock:close()
|
||||
-- reply now contains the web page https://code.google.com/p/civetweb
|
||||
end
|
||||
|
||||
|
||||
**IMPORTANT: Civetweb does not send HTTP headers for Lua pages. Therefore,
|
||||
every Lua Page must begin with HTTP reply line and headers**, like this:
|
||||
|
||||
<? print('HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n') ?>
|
||||
<html><body>
|
||||
... the rest of the web page ...
|
||||
|
||||
To serve Lua Page, civetweb creates Lua context. That context is used for
|
||||
all Lua blocks within the page. That means, all Lua blocks on the same page
|
||||
share the same context. If one block defines a variable, for example, that
|
||||
variable is visible in the block that follows.
|
||||
|
||||
# Common Problems
|
||||
- PHP doesn't work - getting empty page, or 'File not found' error. The
|
||||
reason for that is wrong paths to the interpreter. Remember that with PHP,
|
||||
correct interpreter is `php-cgi.exe` (`php-cgi` on UNIX). Solution: specify
|
||||
full path to the PHP interpreter, e.g.:
|
||||
`civetweb -cgi_interpreter /full/path/to/php-cgi`
|
||||
|
||||
- Civetweb fails to start. If Civetweb exits immediately when run, this
|
||||
usually indicates a syntax error in the configuration file
|
||||
(named `civetweb.conf` by default) or the command-line arguments.
|
||||
Syntax checking is omitted from Civetweb to keep its size low. However,
|
||||
the Manual should be of help. Note: the syntax changes from time to time,
|
||||
so updating the config file might be necessary after executable update.
|
||||
|
||||
- Embedding with OpenSSL on Windows might fail because of calling convention.
|
||||
To force Civetweb to use `__stdcall` convention, add `/Gz` compilation
|
||||
flag in Visual Studio compiler.
|
||||
|
||||
6555
src/civetweb/civetweb.c
Normal file
6555
src/civetweb/civetweb.c
Normal file
File diff suppressed because it is too large
Load diff
510
src/civetweb/civetweb.h
Normal file
510
src/civetweb/civetweb.h
Normal file
|
|
@ -0,0 +1,510 @@
|
|||
/* Copyright (c) 2004-2013 Sergey Lyubka
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef CIVETWEB_HEADER_INCLUDED
|
||||
#define CIVETWEB_HEADER_INCLUDED
|
||||
|
||||
#ifndef CIVETWEB_VERSION
|
||||
#define CIVETWEB_VERSION "1.6"
|
||||
#endif
|
||||
|
||||
#ifndef CIVETWEB_API
|
||||
#if defined(_WIN32)
|
||||
#if defined(CIVETWEB_DLL_EXPORTS)
|
||||
#define CIVETWEB_API __declspec(dllexport)
|
||||
#elif defined(CIVETWEB_DLL_IMPORTS)
|
||||
#define CIVETWEB_API __declspec(dllimport)
|
||||
#else
|
||||
#define CIVETWEB_API
|
||||
#endif
|
||||
#else
|
||||
#define CIVETWEB_API
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
struct mg_context; /* Handle for the HTTP service itself */
|
||||
struct mg_connection; /* Handle for the individual connection */
|
||||
|
||||
|
||||
/* This structure contains information about the HTTP request. */
|
||||
struct mg_request_info {
|
||||
const char *request_method; /* "GET", "POST", etc */
|
||||
const char *uri; /* URL-decoded URI */
|
||||
const char *http_version; /* E.g. "1.0", "1.1" */
|
||||
const char *query_string; /* URL part after '?', not including '?', or
|
||||
NULL */
|
||||
const char *remote_user; /* Authenticated user, or NULL if no auth
|
||||
used */
|
||||
long remote_ip; /* Client's IP address */
|
||||
int remote_port; /* Client's port */
|
||||
int is_ssl; /* 1 if SSL-ed, 0 if not */
|
||||
void *user_data; /* User data pointer passed to mg_start() */
|
||||
void *conn_data; /* Connection-specific user data */
|
||||
|
||||
int num_headers; /* Number of HTTP headers */
|
||||
struct mg_header {
|
||||
const char *name; /* HTTP header name */
|
||||
const char *value; /* HTTP header value */
|
||||
} http_headers[64]; /* Maximum 64 headers */
|
||||
};
|
||||
|
||||
|
||||
/* This structure needs to be passed to mg_start(), to let civetweb know
|
||||
which callbacks to invoke. For detailed description, see
|
||||
https://github.com/sunsetbrew/civetweb/blob/master/docs/UserManual.md */
|
||||
struct mg_callbacks {
|
||||
/* Called when civetweb has received new HTTP request.
|
||||
If callback returns non-zero,
|
||||
callback must process the request by sending valid HTTP headers and
|
||||
body, and civetweb will not do any further processing.
|
||||
If callback returns 0, civetweb processes the request itself. In this
|
||||
case, callback must not send any data to the client. */
|
||||
int (*begin_request)(struct mg_connection *);
|
||||
|
||||
/* Called when civetweb has finished processing request. */
|
||||
void (*end_request)(const struct mg_connection *, int reply_status_code);
|
||||
|
||||
/* Called when civetweb is about to log a message. If callback returns
|
||||
non-zero, civetweb does not log anything. */
|
||||
int (*log_message)(const struct mg_connection *, const char *message);
|
||||
|
||||
/* Called when civetweb initializes SSL library. */
|
||||
int (*init_ssl)(void *ssl_context, void *user_data);
|
||||
|
||||
/* Called when websocket request is received, before websocket handshake.
|
||||
If callback returns 0, civetweb proceeds with handshake, otherwise
|
||||
cinnection is closed immediately. */
|
||||
int (*websocket_connect)(const struct mg_connection *);
|
||||
|
||||
/* Called when websocket handshake is successfully completed, and
|
||||
connection is ready for data exchange. */
|
||||
void (*websocket_ready)(struct mg_connection *);
|
||||
|
||||
/* Called when data frame has been received from the client.
|
||||
Parameters:
|
||||
bits: first byte of the websocket frame, see websocket RFC at
|
||||
http://tools.ietf.org/html/rfc6455, section 5.2
|
||||
data, data_len: payload, with mask (if any) already applied.
|
||||
Return value:
|
||||
non-0: keep this websocket connection opened.
|
||||
0: close this websocket connection. */
|
||||
int (*websocket_data)(struct mg_connection *, int bits,
|
||||
char *data, size_t data_len);
|
||||
|
||||
/* Called when civetweb is closing a connection. The per-context mutex is
|
||||
locked when this is invoked. This is primarily useful for noting when
|
||||
a websocket is closing and removing it from any application-maintained
|
||||
list of clients. */
|
||||
void (*connection_close)(struct mg_connection *);
|
||||
|
||||
/* Called when civetweb tries to open a file. Used to intercept file open
|
||||
calls, and serve file data from memory instead.
|
||||
Parameters:
|
||||
path: Full path to the file to open.
|
||||
data_len: Placeholder for the file size, if file is served from
|
||||
memory.
|
||||
Return value:
|
||||
NULL: do not serve file from memory, proceed with normal file open.
|
||||
non-NULL: pointer to the file contents in memory. data_len must be
|
||||
initilized with the size of the memory block. */
|
||||
const char * (*open_file)(const struct mg_connection *,
|
||||
const char *path, size_t *data_len);
|
||||
|
||||
/* Called when civetweb is about to serve Lua server page (.lp file), if
|
||||
Lua support is enabled.
|
||||
Parameters:
|
||||
lua_context: "lua_State *" pointer. */
|
||||
void (*init_lua)(struct mg_connection *, void *lua_context);
|
||||
|
||||
/* Called when civetweb has uploaded a file to a temporary directory as a
|
||||
result of mg_upload() call.
|
||||
Parameters:
|
||||
file_file: full path name to the uploaded file. */
|
||||
void (*upload)(struct mg_connection *, const char *file_name);
|
||||
|
||||
/* Called when civetweb is about to send HTTP error to the client.
|
||||
Implementing this callback allows to create custom error pages.
|
||||
Parameters:
|
||||
status: HTTP error status code. */
|
||||
int (*http_error)(struct mg_connection *, int status);
|
||||
};
|
||||
|
||||
/* Start web server.
|
||||
|
||||
Parameters:
|
||||
callbacks: mg_callbacks structure with user-defined callbacks.
|
||||
options: NULL terminated list of option_name, option_value pairs that
|
||||
specify Civetweb configuration parameters.
|
||||
|
||||
Side-effects: on UNIX, ignores SIGCHLD and SIGPIPE signals. If custom
|
||||
processing is required for these, signal handlers must be set up
|
||||
after calling mg_start().
|
||||
|
||||
|
||||
Example:
|
||||
const char *options[] = {
|
||||
"document_root", "/var/www",
|
||||
"listening_ports", "80,443s",
|
||||
NULL
|
||||
};
|
||||
struct mg_context *ctx = mg_start(&my_func, NULL, options);
|
||||
|
||||
Refer to https://github.com/sunsetbrew/civetweb/blob/master/docs/UserManual.md
|
||||
for the list of valid option and their possible values.
|
||||
|
||||
Return:
|
||||
web server context, or NULL on error. */
|
||||
CIVETWEB_API struct mg_context *mg_start(const struct mg_callbacks *callbacks,
|
||||
void *user_data,
|
||||
const char **configuration_options);
|
||||
|
||||
|
||||
/* Stop the web server.
|
||||
|
||||
Must be called last, when an application wants to stop the web server and
|
||||
release all associated resources. This function blocks until all Civetweb
|
||||
threads are stopped. Context pointer becomes invalid. */
|
||||
CIVETWEB_API void mg_stop(struct mg_context *);
|
||||
|
||||
/* mg_request_handler
|
||||
|
||||
Called when a new request comes in. This callback is URI based
|
||||
and configured with mg_set_request_handler().
|
||||
|
||||
Parameters:
|
||||
conn: current connection information.
|
||||
cbdata: the callback data configured with mg_set_request_handler().
|
||||
Returns:
|
||||
0: the handler could not handle the request, so fall through.
|
||||
1: the handler processed the request. */
|
||||
typedef int (* mg_request_handler)(struct mg_connection *conn, void *cbdata);
|
||||
|
||||
/* mg_set_request_handler
|
||||
|
||||
Sets or removes a URI mapping for a request handler.
|
||||
|
||||
URI's are ordered and prefixed URI's are supported. For example,
|
||||
consider two URIs: /a/b and /a
|
||||
/a matches /a
|
||||
/a/b matches /a/b
|
||||
/a/c matches /a
|
||||
|
||||
Parameters:
|
||||
ctx: server context
|
||||
uri: the URI to configure
|
||||
handler: the callback handler to use when the URI is requested.
|
||||
If NULL, the URI will be removed.
|
||||
cbdata: the callback data to give to the handler when it s requested. */
|
||||
CIVETWEB_API void mg_set_request_handler(struct mg_context *ctx, const char *uri, mg_request_handler handler, void *cbdata);
|
||||
|
||||
|
||||
/* Get the value of particular configuration parameter.
|
||||
The value returned is read-only. Civetweb does not allow changing
|
||||
configuration at run time.
|
||||
If given parameter name is not valid, NULL is returned. For valid
|
||||
names, return value is guaranteed to be non-NULL. If parameter is not
|
||||
set, zero-length string is returned. */
|
||||
CIVETWEB_API const char *mg_get_option(const struct mg_context *ctx, const char *name);
|
||||
|
||||
|
||||
/* Return array of strings that represent valid configuration options.
|
||||
For each option, option name and default value is returned, i.e. the
|
||||
number of entries in the array equals to number_of_options x 2.
|
||||
Array is NULL terminated. */
|
||||
CIVETWEB_API const char **mg_get_valid_option_names(void);
|
||||
|
||||
/* Get the list of ports that civetweb is listening on.
|
||||
size is the size of the ports int array and ssl int array to fill.
|
||||
It is the caller's responsibility to make sure ports and ssl each
|
||||
contain at least size int elements worth of memory to write into.
|
||||
Return value is the number of ports and ssl information filled in.
|
||||
The value returned is read-only. Civetweb does not allow changing
|
||||
configuration at run time. */
|
||||
CIVETWEB_API size_t mg_get_ports(const struct mg_context *ctx, size_t size, int* ports, int* ssl);
|
||||
|
||||
/* Add, edit or delete the entry in the passwords file.
|
||||
|
||||
This function allows an application to manipulate .htpasswd files on the
|
||||
fly by adding, deleting and changing user records. This is one of the
|
||||
several ways of implementing authentication on the server side. For another,
|
||||
cookie-based way please refer to the examples/chat in the source tree.
|
||||
|
||||
If password is not NULL, entry is added (or modified if already exists).
|
||||
If password is NULL, entry is deleted.
|
||||
|
||||
Return:
|
||||
1 on success, 0 on error. */
|
||||
CIVETWEB_API int mg_modify_passwords_file(const char *passwords_file_name,
|
||||
const char *domain,
|
||||
const char *user,
|
||||
const char *password);
|
||||
|
||||
|
||||
/* Return information associated with the request. */
|
||||
CIVETWEB_API struct mg_request_info *mg_get_request_info(struct mg_connection *);
|
||||
|
||||
|
||||
/* Send data to the client.
|
||||
Return:
|
||||
0 when the connection has been closed
|
||||
-1 on error
|
||||
>0 number of bytes written on success */
|
||||
CIVETWEB_API int mg_write(struct mg_connection *, const void *buf, size_t len);
|
||||
|
||||
|
||||
/* Send data to a websocket client wrapped in a websocket frame. Uses mg_lock
|
||||
to ensure that the transmission is not interrupted, i.e., when the
|
||||
application is proactively communicating and responding to a request
|
||||
simultaneously.
|
||||
|
||||
Send data to a websocket client wrapped in a websocket frame.
|
||||
This function is available when civetweb is compiled with -DUSE_WEBSOCKET
|
||||
|
||||
Return:
|
||||
0 when the connection has been closed
|
||||
-1 on error
|
||||
>0 number of bytes written on success */
|
||||
CIVETWEB_API int mg_websocket_write(struct mg_connection* conn, int opcode,
|
||||
const char *data, size_t data_len);
|
||||
|
||||
/* Blocks until unique access is obtained to this connection. Intended for use
|
||||
with websockets only.
|
||||
Invoke this before mg_write or mg_printf when communicating with a
|
||||
websocket if your code has server-initiated communication as well as
|
||||
communication in direct response to a message. */
|
||||
CIVETWEB_API void mg_lock(struct mg_connection* conn);
|
||||
CIVETWEB_API void mg_unlock(struct mg_connection* conn);
|
||||
|
||||
/* Opcodes, from http://tools.ietf.org/html/rfc6455 */
|
||||
enum {
|
||||
WEBSOCKET_OPCODE_CONTINUATION = 0x0,
|
||||
WEBSOCKET_OPCODE_TEXT = 0x1,
|
||||
WEBSOCKET_OPCODE_BINARY = 0x2,
|
||||
WEBSOCKET_OPCODE_CONNECTION_CLOSE = 0x8,
|
||||
WEBSOCKET_OPCODE_PING = 0x9,
|
||||
WEBSOCKET_OPCODE_PONG = 0xa
|
||||
};
|
||||
|
||||
|
||||
/* Macros for enabling compiler-specific checks for printf-like arguments. */
|
||||
#undef PRINTF_FORMAT_STRING
|
||||
#if defined(_MSC_VER) && _MSC_VER >= 1400
|
||||
#include <sal.h>
|
||||
#if defined(_MSC_VER) && _MSC_VER > 1400
|
||||
#define PRINTF_FORMAT_STRING(s) _Printf_format_string_ s
|
||||
#else
|
||||
#define PRINTF_FORMAT_STRING(s) __format_string s
|
||||
#endif
|
||||
#else
|
||||
#define PRINTF_FORMAT_STRING(s) s
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define PRINTF_ARGS(x, y) __attribute__((format(printf, x, y)))
|
||||
#else
|
||||
#define PRINTF_ARGS(x, y)
|
||||
#endif
|
||||
|
||||
/* Send data to the client using printf() semantics.
|
||||
|
||||
Works exactly like mg_write(), but allows to do message formatting. */
|
||||
CIVETWEB_API int mg_printf(struct mg_connection *,
|
||||
PRINTF_FORMAT_STRING(const char *fmt), ...) PRINTF_ARGS(2, 3);
|
||||
|
||||
|
||||
/* Send contents of the entire file together with HTTP headers. */
|
||||
CIVETWEB_API void mg_send_file(struct mg_connection *conn, const char *path);
|
||||
|
||||
|
||||
/* Read data from the remote end, return number of bytes read.
|
||||
Return:
|
||||
0 connection has been closed by peer. No more data could be read.
|
||||
< 0 read error. No more data could be read from the connection.
|
||||
> 0 number of bytes read into the buffer. */
|
||||
CIVETWEB_API int mg_read(struct mg_connection *, void *buf, size_t len);
|
||||
|
||||
|
||||
/* Get the value of particular HTTP header.
|
||||
|
||||
This is a helper function. It traverses request_info->http_headers array,
|
||||
and if the header is present in the array, returns its value. If it is
|
||||
not present, NULL is returned. */
|
||||
CIVETWEB_API const char *mg_get_header(const struct mg_connection *, const char *name);
|
||||
|
||||
|
||||
/* Get a value of particular form variable.
|
||||
|
||||
Parameters:
|
||||
data: pointer to form-uri-encoded buffer. This could be either POST data,
|
||||
or request_info.query_string.
|
||||
data_len: length of the encoded data.
|
||||
var_name: variable name to decode from the buffer
|
||||
dst: destination buffer for the decoded variable
|
||||
dst_len: length of the destination buffer
|
||||
|
||||
Return:
|
||||
On success, length of the decoded variable.
|
||||
On error:
|
||||
-1 (variable not found).
|
||||
-2 (destination buffer is NULL, zero length or too small to hold the
|
||||
decoded variable).
|
||||
|
||||
Destination buffer is guaranteed to be '\0' - terminated if it is not
|
||||
NULL or zero length. */
|
||||
CIVETWEB_API int mg_get_var(const char *data, size_t data_len,
|
||||
const char *var_name, char *dst, size_t dst_len);
|
||||
|
||||
/* Get a value of particular form variable.
|
||||
|
||||
Parameters:
|
||||
data: pointer to form-uri-encoded buffer. This could be either POST data,
|
||||
or request_info.query_string.
|
||||
data_len: length of the encoded data.
|
||||
var_name: variable name to decode from the buffer
|
||||
dst: destination buffer for the decoded variable
|
||||
dst_len: length of the destination buffer
|
||||
occurrence: which occurrence of the variable, 0 is the first, 1 the
|
||||
second...
|
||||
this makes it possible to parse a query like
|
||||
b=x&a=y&a=z which will have occurrence values b:0, a:0 and a:1
|
||||
|
||||
Return:
|
||||
On success, length of the decoded variable.
|
||||
On error:
|
||||
-1 (variable not found).
|
||||
-2 (destination buffer is NULL, zero length or too small to hold the
|
||||
decoded variable).
|
||||
|
||||
Destination buffer is guaranteed to be '\0' - terminated if it is not
|
||||
NULL or zero length. */
|
||||
CIVETWEB_API int mg_get_var2(const char *data, size_t data_len,
|
||||
const char *var_name, char *dst, size_t dst_len, size_t occurrence);
|
||||
|
||||
/* Fetch value of certain cookie variable into the destination buffer.
|
||||
|
||||
Destination buffer is guaranteed to be '\0' - terminated. In case of
|
||||
failure, dst[0] == '\0'. Note that RFC allows many occurrences of the same
|
||||
parameter. This function returns only first occurrence.
|
||||
|
||||
Return:
|
||||
On success, value length.
|
||||
On error:
|
||||
-1 (either "Cookie:" header is not present at all or the requested
|
||||
parameter is not found).
|
||||
-2 (destination buffer is NULL, zero length or too small to hold the
|
||||
value). */
|
||||
CIVETWEB_API int mg_get_cookie(const char *cookie, const char *var_name,
|
||||
char *buf, size_t buf_len);
|
||||
|
||||
|
||||
/* Download data from the remote web server.
|
||||
host: host name to connect to, e.g. "foo.com", or "10.12.40.1".
|
||||
port: port number, e.g. 80.
|
||||
use_ssl: wether to use SSL connection.
|
||||
error_buffer, error_buffer_size: error message placeholder.
|
||||
request_fmt,...: HTTP request.
|
||||
Return:
|
||||
On success, valid pointer to the new connection, suitable for mg_read().
|
||||
On error, NULL. error_buffer contains error message.
|
||||
Example:
|
||||
char ebuf[100];
|
||||
struct mg_connection *conn;
|
||||
conn = mg_download("google.com", 80, 0, ebuf, sizeof(ebuf),
|
||||
"%s", "GET / HTTP/1.0\r\nHost: google.com\r\n\r\n");
|
||||
*/
|
||||
CIVETWEB_API struct mg_connection *mg_download(const char *host, int port, int use_ssl,
|
||||
char *error_buffer, size_t error_buffer_size,
|
||||
PRINTF_FORMAT_STRING(const char *request_fmt),
|
||||
...) PRINTF_ARGS(6, 7);
|
||||
|
||||
|
||||
/* Close the connection opened by mg_download(). */
|
||||
CIVETWEB_API void mg_close_connection(struct mg_connection *conn);
|
||||
|
||||
|
||||
/* File upload functionality. Each uploaded file gets saved into a temporary
|
||||
file and MG_UPLOAD event is sent.
|
||||
Return number of uploaded files. */
|
||||
CIVETWEB_API int mg_upload(struct mg_connection *conn, const char *destination_dir);
|
||||
|
||||
|
||||
/* Convenience function -- create detached thread.
|
||||
Return: 0 on success, non-0 on error. */
|
||||
typedef void * (*mg_thread_func_t)(void *);
|
||||
CIVETWEB_API int mg_start_thread(mg_thread_func_t f, void *p);
|
||||
|
||||
|
||||
/* Return builtin mime type for the given file name.
|
||||
For unrecognized extensions, "text/plain" is returned. */
|
||||
CIVETWEB_API const char *mg_get_builtin_mime_type(const char *file_name);
|
||||
|
||||
|
||||
/* Return Civetweb version. */
|
||||
CIVETWEB_API const char *mg_version(void);
|
||||
|
||||
/* URL-decode input buffer into destination buffer.
|
||||
0-terminate the destination buffer.
|
||||
form-url-encoded data differs from URI encoding in a way that it
|
||||
uses '+' as character for space, see RFC 1866 section 8.2.1
|
||||
http://ftp.ics.uci.edu/pub/ietf/html/rfc1866.txt
|
||||
Return: length of the decoded data, or -1 if dst buffer is too small. */
|
||||
CIVETWEB_API int mg_url_decode(const char *src, int src_len, char *dst,
|
||||
int dst_len, int is_form_url_encoded);
|
||||
|
||||
/* URL-encode input buffer into destination buffer.
|
||||
returns the length of the resulting buffer or -1
|
||||
is the buffer is too small. */
|
||||
CIVETWEB_API int mg_url_encode(const char *src, char *dst, size_t dst_len);
|
||||
|
||||
/* MD5 hash given strings.
|
||||
Buffer 'buf' must be 33 bytes long. Varargs is a NULL terminated list of
|
||||
ASCIIz strings. When function returns, buf will contain human-readable
|
||||
MD5 hash. Example:
|
||||
char buf[33];
|
||||
mg_md5(buf, "aa", "bb", NULL); */
|
||||
CIVETWEB_API char *mg_md5(char buf[33], ...);
|
||||
|
||||
|
||||
/* Print error message to the opened error log stream.
|
||||
This utilizes the provided logging configuration.
|
||||
conn: connection
|
||||
fmt: format string without the line return
|
||||
...: variable argument list
|
||||
Example:
|
||||
mg_cry(conn,"i like %s", "logging"); */
|
||||
CIVETWEB_API void mg_cry(struct mg_connection *conn,
|
||||
PRINTF_FORMAT_STRING(const char *fmt), ...) PRINTF_ARGS(2, 3);
|
||||
|
||||
/* utility method to compare two buffers, case incensitive. */
|
||||
CIVETWEB_API int mg_strncasecmp(const char *s1, const char *s2, size_t len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* CIVETWEB_HEADER_INCLUDED */
|
||||
53
src/civetweb/hello.c
Normal file
53
src/civetweb/hello.c
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "civetweb.h"
|
||||
|
||||
// This function will be called by civetweb on every new request.
|
||||
static int begin_request_handler(struct mg_connection *conn)
|
||||
{
|
||||
const struct mg_request_info *request_info = mg_get_request_info(conn);
|
||||
char content[100];
|
||||
|
||||
// Prepare the message we're going to send
|
||||
int content_length = snprintf(content, sizeof(content),
|
||||
"Hello from civetweb! Remote port: %d",
|
||||
request_info->remote_port);
|
||||
|
||||
// Send HTTP reply to the client
|
||||
mg_printf(conn,
|
||||
"HTTP/1.1 200 OK\r\n"
|
||||
"Content-Type: text/plain\r\n"
|
||||
"Content-Length: %d\r\n" // Always set Content-Length
|
||||
"\r\n"
|
||||
"%s",
|
||||
content_length, content);
|
||||
|
||||
// Returning non-zero tells civetweb that our function has replied to
|
||||
// the client, and civetweb should not send client any more data.
|
||||
return 1;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
struct mg_context *ctx;
|
||||
struct mg_callbacks callbacks;
|
||||
|
||||
// List of options. Last element must be NULL.
|
||||
const char *options[] = {"listening_ports", "8080", NULL};
|
||||
|
||||
// Prepare callbacks structure. We have only one callback, the rest are NULL.
|
||||
memset(&callbacks, 0, sizeof(callbacks));
|
||||
callbacks.begin_request = begin_request_handler;
|
||||
|
||||
// Start the web server.
|
||||
ctx = mg_start(&callbacks, NULL, options);
|
||||
|
||||
// Wait until user hits "enter". Server is running in separate thread.
|
||||
// Navigating to http://localhost:8080 will invoke begin_request_handler().
|
||||
getchar();
|
||||
|
||||
// Stop the server.
|
||||
mg_stop(ctx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
1147
src/civetweb/main.c
Normal file
1147
src/civetweb/main.c
Normal file
File diff suppressed because it is too large
Load diff
461
src/civetweb/md5.inl
Normal file
461
src/civetweb/md5.inl
Normal file
|
|
@ -0,0 +1,461 @@
|
|||
/*
|
||||
* This an amalgamation of md5.c and md5.h into a single file
|
||||
* with all static declaration to reduce linker conflicts
|
||||
* in Civetweb.
|
||||
*
|
||||
* The MD5_STATIC declaration was added to facilitate static
|
||||
* inclusion.
|
||||
* No Face Press, LLC
|
||||
*/
|
||||
|
||||
/* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */
|
||||
/*
|
||||
Independent implementation of MD5 (RFC 1321).
|
||||
|
||||
This code implements the MD5 Algorithm defined in RFC 1321, whose
|
||||
text is available at
|
||||
http://www.ietf.org/rfc/rfc1321.txt
|
||||
The code is derived from the text of the RFC, including the test suite
|
||||
(section A.5) but excluding the rest of Appendix A. It does not include
|
||||
any code or documentation that is identified in the RFC as being
|
||||
copyrighted.
|
||||
|
||||
The original and principal author of md5.h is L. Peter Deutsch
|
||||
<ghost@aladdin.com>. Other authors are noted in the change history
|
||||
that follows (in reverse chronological order):
|
||||
|
||||
2002-04-13 lpd Removed support for non-ANSI compilers; removed
|
||||
references to Ghostscript; clarified derivation from RFC 1321;
|
||||
now handles byte order either statically or dynamically.
|
||||
1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
|
||||
1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
|
||||
added conditionalization for C++ compilation from Martin
|
||||
Purschke <purschke@bnl.gov>.
|
||||
1999-05-03 lpd Original version.
|
||||
*/
|
||||
|
||||
#ifndef md5_INCLUDED
|
||||
# define md5_INCLUDED
|
||||
|
||||
/*
|
||||
* This package supports both compile-time and run-time determination of CPU
|
||||
* byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
|
||||
* compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
|
||||
* defined as non-zero, the code will be compiled to run only on big-endian
|
||||
* CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
|
||||
* run on either big- or little-endian CPUs, but will run slightly less
|
||||
* efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
|
||||
*/
|
||||
|
||||
typedef unsigned char md5_byte_t; /* 8-bit byte */
|
||||
typedef unsigned int md5_word_t; /* 32-bit word */
|
||||
|
||||
/* Define the state of the MD5 Algorithm. */
|
||||
typedef struct md5_state_s {
|
||||
md5_word_t count[2]; /* message length in bits, lsw first */
|
||||
md5_word_t abcd[4]; /* digest buffer */
|
||||
md5_byte_t buf[64]; /* accumulate block */
|
||||
} md5_state_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/* Initialize the algorithm. */
|
||||
MD5_STATIC void md5_init(md5_state_t *pms);
|
||||
|
||||
/* Append a string to the message. */
|
||||
MD5_STATIC void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
|
||||
|
||||
/* Finish the message and return the digest. */
|
||||
MD5_STATIC void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* end extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* md5_INCLUDED */
|
||||
|
||||
/*
|
||||
Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
L. Peter Deutsch
|
||||
ghost@aladdin.com
|
||||
|
||||
*/
|
||||
/* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */
|
||||
/*
|
||||
Independent implementation of MD5 (RFC 1321).
|
||||
|
||||
This code implements the MD5 Algorithm defined in RFC 1321, whose
|
||||
text is available at
|
||||
http://www.ietf.org/rfc/rfc1321.txt
|
||||
The code is derived from the text of the RFC, including the test suite
|
||||
(section A.5) but excluding the rest of Appendix A. It does not include
|
||||
any code or documentation that is identified in the RFC as being
|
||||
copyrighted.
|
||||
|
||||
The original and principal author of md5.c is L. Peter Deutsch
|
||||
<ghost@aladdin.com>. Other authors are noted in the change history
|
||||
that follows (in reverse chronological order):
|
||||
|
||||
2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order
|
||||
either statically or dynamically; added missing #include <string.h>
|
||||
in library.
|
||||
2002-03-11 lpd Corrected argument list for main(), and added int return
|
||||
type, in test program and T value program.
|
||||
2002-02-21 lpd Added missing #include <stdio.h> in test program.
|
||||
2000-07-03 lpd Patched to eliminate warnings about "constant is
|
||||
unsigned in ANSI C, signed in traditional"; made test program
|
||||
self-checking.
|
||||
1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
|
||||
1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).
|
||||
1999-05-03 lpd Original version.
|
||||
*/
|
||||
|
||||
#ifndef MD5_STATIC
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */
|
||||
#ifdef ARCH_IS_BIG_ENDIAN
|
||||
# define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1)
|
||||
#else
|
||||
# define BYTE_ORDER 0
|
||||
#endif
|
||||
|
||||
#define T_MASK ((md5_word_t)~0)
|
||||
#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
|
||||
#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
|
||||
#define T3 0x242070db
|
||||
#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
|
||||
#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
|
||||
#define T6 0x4787c62a
|
||||
#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
|
||||
#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
|
||||
#define T9 0x698098d8
|
||||
#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
|
||||
#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
|
||||
#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
|
||||
#define T13 0x6b901122
|
||||
#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
|
||||
#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
|
||||
#define T16 0x49b40821
|
||||
#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
|
||||
#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
|
||||
#define T19 0x265e5a51
|
||||
#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
|
||||
#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
|
||||
#define T22 0x02441453
|
||||
#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
|
||||
#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
|
||||
#define T25 0x21e1cde6
|
||||
#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
|
||||
#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
|
||||
#define T28 0x455a14ed
|
||||
#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
|
||||
#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
|
||||
#define T31 0x676f02d9
|
||||
#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
|
||||
#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
|
||||
#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
|
||||
#define T35 0x6d9d6122
|
||||
#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
|
||||
#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
|
||||
#define T38 0x4bdecfa9
|
||||
#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
|
||||
#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
|
||||
#define T41 0x289b7ec6
|
||||
#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
|
||||
#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
|
||||
#define T44 0x04881d05
|
||||
#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
|
||||
#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
|
||||
#define T47 0x1fa27cf8
|
||||
#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
|
||||
#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
|
||||
#define T50 0x432aff97
|
||||
#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
|
||||
#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
|
||||
#define T53 0x655b59c3
|
||||
#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
|
||||
#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
|
||||
#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
|
||||
#define T57 0x6fa87e4f
|
||||
#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
|
||||
#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
|
||||
#define T60 0x4e0811a1
|
||||
#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
|
||||
#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
|
||||
#define T63 0x2ad7d2bb
|
||||
#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
|
||||
|
||||
|
||||
static void
|
||||
md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/)
|
||||
{
|
||||
md5_word_t
|
||||
a = pms->abcd[0], b = pms->abcd[1],
|
||||
c = pms->abcd[2], d = pms->abcd[3];
|
||||
md5_word_t t;
|
||||
#if BYTE_ORDER > 0
|
||||
/* Define storage only for big-endian CPUs. */
|
||||
md5_word_t X[16];
|
||||
#else
|
||||
/* Define storage for little-endian or both types of CPUs. */
|
||||
md5_word_t xbuf[16];
|
||||
const md5_word_t *X;
|
||||
#endif
|
||||
|
||||
{
|
||||
#if BYTE_ORDER == 0
|
||||
/*
|
||||
* Determine dynamically whether this is a big-endian or
|
||||
* little-endian machine, since we can use a more efficient
|
||||
* algorithm on the latter.
|
||||
*/
|
||||
static const int w = 1;
|
||||
|
||||
if (*((const md5_byte_t *)&w)) /* dynamic little-endian */
|
||||
#endif
|
||||
#if BYTE_ORDER <= 0 /* little-endian */
|
||||
{
|
||||
/*
|
||||
* On little-endian machines, we can process properly aligned
|
||||
* data without copying it.
|
||||
*/
|
||||
if (!((data - (const md5_byte_t *)0) & 3)) {
|
||||
/* data are properly aligned */
|
||||
X = (const md5_word_t *)data;
|
||||
} else {
|
||||
/* not aligned */
|
||||
memcpy(xbuf, data, 64);
|
||||
X = xbuf;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if BYTE_ORDER == 0
|
||||
else /* dynamic big-endian */
|
||||
#endif
|
||||
#if BYTE_ORDER >= 0 /* big-endian */
|
||||
{
|
||||
/*
|
||||
* On big-endian machines, we must arrange the bytes in the
|
||||
* right order.
|
||||
*/
|
||||
const md5_byte_t *xp = data;
|
||||
int i;
|
||||
|
||||
# if BYTE_ORDER == 0
|
||||
X = xbuf; /* (dynamic only) */
|
||||
# else
|
||||
# define xbuf X /* (static only) */
|
||||
# endif
|
||||
for (i = 0; i < 16; ++i, xp += 4)
|
||||
xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
|
||||
|
||||
/* Round 1. */
|
||||
/* Let [abcd k s i] denote the operation
|
||||
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
|
||||
#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
|
||||
#define SET(a, b, c, d, k, s, Ti)\
|
||||
t = a + F(b,c,d) + X[k] + Ti;\
|
||||
a = ROTATE_LEFT(t, s) + b
|
||||
/* Do the following 16 operations. */
|
||||
SET(a, b, c, d, 0, 7, T1);
|
||||
SET(d, a, b, c, 1, 12, T2);
|
||||
SET(c, d, a, b, 2, 17, T3);
|
||||
SET(b, c, d, a, 3, 22, T4);
|
||||
SET(a, b, c, d, 4, 7, T5);
|
||||
SET(d, a, b, c, 5, 12, T6);
|
||||
SET(c, d, a, b, 6, 17, T7);
|
||||
SET(b, c, d, a, 7, 22, T8);
|
||||
SET(a, b, c, d, 8, 7, T9);
|
||||
SET(d, a, b, c, 9, 12, T10);
|
||||
SET(c, d, a, b, 10, 17, T11);
|
||||
SET(b, c, d, a, 11, 22, T12);
|
||||
SET(a, b, c, d, 12, 7, T13);
|
||||
SET(d, a, b, c, 13, 12, T14);
|
||||
SET(c, d, a, b, 14, 17, T15);
|
||||
SET(b, c, d, a, 15, 22, T16);
|
||||
#undef SET
|
||||
|
||||
/* Round 2. */
|
||||
/* Let [abcd k s i] denote the operation
|
||||
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
|
||||
#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
|
||||
#define SET(a, b, c, d, k, s, Ti)\
|
||||
t = a + G(b,c,d) + X[k] + Ti;\
|
||||
a = ROTATE_LEFT(t, s) + b
|
||||
/* Do the following 16 operations. */
|
||||
SET(a, b, c, d, 1, 5, T17);
|
||||
SET(d, a, b, c, 6, 9, T18);
|
||||
SET(c, d, a, b, 11, 14, T19);
|
||||
SET(b, c, d, a, 0, 20, T20);
|
||||
SET(a, b, c, d, 5, 5, T21);
|
||||
SET(d, a, b, c, 10, 9, T22);
|
||||
SET(c, d, a, b, 15, 14, T23);
|
||||
SET(b, c, d, a, 4, 20, T24);
|
||||
SET(a, b, c, d, 9, 5, T25);
|
||||
SET(d, a, b, c, 14, 9, T26);
|
||||
SET(c, d, a, b, 3, 14, T27);
|
||||
SET(b, c, d, a, 8, 20, T28);
|
||||
SET(a, b, c, d, 13, 5, T29);
|
||||
SET(d, a, b, c, 2, 9, T30);
|
||||
SET(c, d, a, b, 7, 14, T31);
|
||||
SET(b, c, d, a, 12, 20, T32);
|
||||
#undef SET
|
||||
|
||||
/* Round 3. */
|
||||
/* Let [abcd k s t] denote the operation
|
||||
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
|
||||
#define H(x, y, z) ((x) ^ (y) ^ (z))
|
||||
#define SET(a, b, c, d, k, s, Ti)\
|
||||
t = a + H(b,c,d) + X[k] + Ti;\
|
||||
a = ROTATE_LEFT(t, s) + b
|
||||
/* Do the following 16 operations. */
|
||||
SET(a, b, c, d, 5, 4, T33);
|
||||
SET(d, a, b, c, 8, 11, T34);
|
||||
SET(c, d, a, b, 11, 16, T35);
|
||||
SET(b, c, d, a, 14, 23, T36);
|
||||
SET(a, b, c, d, 1, 4, T37);
|
||||
SET(d, a, b, c, 4, 11, T38);
|
||||
SET(c, d, a, b, 7, 16, T39);
|
||||
SET(b, c, d, a, 10, 23, T40);
|
||||
SET(a, b, c, d, 13, 4, T41);
|
||||
SET(d, a, b, c, 0, 11, T42);
|
||||
SET(c, d, a, b, 3, 16, T43);
|
||||
SET(b, c, d, a, 6, 23, T44);
|
||||
SET(a, b, c, d, 9, 4, T45);
|
||||
SET(d, a, b, c, 12, 11, T46);
|
||||
SET(c, d, a, b, 15, 16, T47);
|
||||
SET(b, c, d, a, 2, 23, T48);
|
||||
#undef SET
|
||||
|
||||
/* Round 4. */
|
||||
/* Let [abcd k s t] denote the operation
|
||||
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
|
||||
#define I(x, y, z) ((y) ^ ((x) | ~(z)))
|
||||
#define SET(a, b, c, d, k, s, Ti)\
|
||||
t = a + I(b,c,d) + X[k] + Ti;\
|
||||
a = ROTATE_LEFT(t, s) + b
|
||||
/* Do the following 16 operations. */
|
||||
SET(a, b, c, d, 0, 6, T49);
|
||||
SET(d, a, b, c, 7, 10, T50);
|
||||
SET(c, d, a, b, 14, 15, T51);
|
||||
SET(b, c, d, a, 5, 21, T52);
|
||||
SET(a, b, c, d, 12, 6, T53);
|
||||
SET(d, a, b, c, 3, 10, T54);
|
||||
SET(c, d, a, b, 10, 15, T55);
|
||||
SET(b, c, d, a, 1, 21, T56);
|
||||
SET(a, b, c, d, 8, 6, T57);
|
||||
SET(d, a, b, c, 15, 10, T58);
|
||||
SET(c, d, a, b, 6, 15, T59);
|
||||
SET(b, c, d, a, 13, 21, T60);
|
||||
SET(a, b, c, d, 4, 6, T61);
|
||||
SET(d, a, b, c, 11, 10, T62);
|
||||
SET(c, d, a, b, 2, 15, T63);
|
||||
SET(b, c, d, a, 9, 21, T64);
|
||||
#undef SET
|
||||
|
||||
/* Then perform the following additions. (That is increment each
|
||||
of the four registers by the value it had before this block
|
||||
was started.) */
|
||||
pms->abcd[0] += a;
|
||||
pms->abcd[1] += b;
|
||||
pms->abcd[2] += c;
|
||||
pms->abcd[3] += d;
|
||||
}
|
||||
|
||||
MD5_STATIC void
|
||||
md5_init(md5_state_t *pms)
|
||||
{
|
||||
pms->count[0] = pms->count[1] = 0;
|
||||
pms->abcd[0] = 0x67452301;
|
||||
pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
|
||||
pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
|
||||
pms->abcd[3] = 0x10325476;
|
||||
}
|
||||
|
||||
MD5_STATIC void
|
||||
md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
|
||||
{
|
||||
const md5_byte_t *p = data;
|
||||
int left = nbytes;
|
||||
int offset = (pms->count[0] >> 3) & 63;
|
||||
md5_word_t nbits = (md5_word_t)(nbytes << 3);
|
||||
|
||||
if (nbytes <= 0)
|
||||
return;
|
||||
|
||||
/* Update the message length. */
|
||||
pms->count[1] += nbytes >> 29;
|
||||
pms->count[0] += nbits;
|
||||
if (pms->count[0] < nbits)
|
||||
pms->count[1]++;
|
||||
|
||||
/* Process an initial partial block. */
|
||||
if (offset) {
|
||||
int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
|
||||
|
||||
memcpy(pms->buf + offset, p, copy);
|
||||
if (offset + copy < 64)
|
||||
return;
|
||||
p += copy;
|
||||
left -= copy;
|
||||
md5_process(pms, pms->buf);
|
||||
}
|
||||
|
||||
/* Process full blocks. */
|
||||
for (; left >= 64; p += 64, left -= 64)
|
||||
md5_process(pms, p);
|
||||
|
||||
/* Process a final partial block. */
|
||||
if (left)
|
||||
memcpy(pms->buf, p, left);
|
||||
}
|
||||
|
||||
MD5_STATIC void
|
||||
md5_finish(md5_state_t *pms, md5_byte_t digest[16])
|
||||
{
|
||||
static const md5_byte_t pad[64] = {
|
||||
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
md5_byte_t data[8];
|
||||
int i;
|
||||
|
||||
/* Save the length before padding. */
|
||||
for (i = 0; i < 8; ++i)
|
||||
data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
|
||||
/* Pad to 56 bytes mod 64. */
|
||||
md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
|
||||
/* Append the length. */
|
||||
md5_append(pms, data, 8);
|
||||
for (i = 0; i < 16; ++i)
|
||||
digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
|
||||
}
|
||||
|
|
@ -31,8 +31,6 @@
|
|||
/* Android OpenGL ES is accessed through EGL */
|
||||
#include "egl/fg_internal_egl.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
/* -- GLOBAL TYPE DEFINITIONS ---------------------------------------------- */
|
||||
/* The structure used by display initialization in freeglut_init.c */
|
||||
typedef struct tagSFG_PlatformDisplay SFG_PlatformDisplay;
|
||||
|
|
|
|||
|
|
@ -607,7 +607,7 @@ GLboolean fgCheckActiveMenu ( SFG_Window *window, int button, GLboolean pressed,
|
|||
fgSetWindow( parent_window );
|
||||
fgStructure.CurrentMenu = active_menu;
|
||||
|
||||
/* Deactivate menu and then call callback (we don't want menu to stay in view while callback is executing) */
|
||||
/* Deactivate menu and then call callback (we don't want menu to stay in view while callback is executing, and user should be able to change menus in callback) */
|
||||
fgDeactivateMenu( parent_window );
|
||||
active_menu->Callback( active_entry->ID );
|
||||
|
||||
|
|
|
|||
|
|
@ -578,6 +578,18 @@ static int fgPlatformGetModifiers (void)
|
|||
( GetKeyState( VK_RMENU ) < 0 )) ? GLUT_ACTIVE_ALT : 0 );
|
||||
}
|
||||
|
||||
/* Check whether a button (VK_*BUTTON) is currently depressed. Returns
|
||||
* non-zero (not necessarily 1) if yes. */
|
||||
static SHORT fgGetAsyncKeyState(int vKey)
|
||||
{
|
||||
/* MSDN says: "If the most significant bit is set, the key is down, and if
|
||||
* the least significant bit is set, the key was pressed after the previous
|
||||
* call to GetAsyncKeyState." This behavior cannot be relied upon however.
|
||||
* Remove this bit so that we can simply test with ! if key is up.
|
||||
*/
|
||||
return GetAsyncKeyState(vKey) & ~1;
|
||||
}
|
||||
|
||||
static LRESULT fghWindowProcKeyPress(SFG_Window *window, UINT uMsg, GLboolean keydown, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
static unsigned char lControl = 0, lShift = 0, lAlt = 0,
|
||||
|
|
@ -629,12 +641,12 @@ static LRESULT fghWindowProcKeyPress(SFG_Window *window, UINT uMsg, GLboolean ke
|
|||
* so when we get an alt, shift or control keypress here, we manually check whether it was the left or the right
|
||||
*/
|
||||
#define ASYNC_KEY_EVENT(winKey,glutKey,keyStateVar)\
|
||||
if (!keyStateVar && GetAsyncKeyState ( winKey ))\
|
||||
if (!keyStateVar && fgGetAsyncKeyState ( winKey ))\
|
||||
{\
|
||||
keypress = glutKey;\
|
||||
keyStateVar = 1;\
|
||||
}\
|
||||
else if (keyStateVar && !GetAsyncKeyState ( winKey ))\
|
||||
else if (keyStateVar && !fgGetAsyncKeyState ( winKey ))\
|
||||
{\
|
||||
keypress = glutKey;\
|
||||
keyStateVar = 0;\
|
||||
|
|
@ -1237,7 +1249,7 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
|||
SetCapture ( window->Window.Handle ) ;
|
||||
setCaptureActive = 1; /* Set to false in WM_CAPTURECHANGED handler */
|
||||
}
|
||||
else if (!GetAsyncKeyState(VK_LBUTTON) && !GetAsyncKeyState(VK_MBUTTON) && !GetAsyncKeyState(VK_RBUTTON))
|
||||
else if (!fgGetAsyncKeyState(VK_LBUTTON) && !fgGetAsyncKeyState(VK_MBUTTON) && !fgGetAsyncKeyState(VK_RBUTTON))
|
||||
/* Make sure all mouse buttons are released before releasing capture */
|
||||
ReleaseCapture () ;
|
||||
|
||||
|
|
|
|||
|
|
@ -82,9 +82,9 @@ static int fghGetWindowProperty(Window window,
|
|||
"fghGetWindowProperty");
|
||||
|
||||
if (type_returned != type)
|
||||
{
|
||||
number_of_elements = 0;
|
||||
}
|
||||
{
|
||||
number_of_elements = 0;
|
||||
}
|
||||
|
||||
return number_of_elements;
|
||||
}
|
||||
|
|
@ -113,30 +113,30 @@ static int fghNetWMSupported(void)
|
|||
XA_WINDOW,
|
||||
(unsigned char **) window_ptr_1);
|
||||
if (number_of_windows == 1)
|
||||
{
|
||||
Window ** window_ptr_2;
|
||||
|
||||
window_ptr_2 = malloc(sizeof(Window *));
|
||||
|
||||
/* Check that the window has the same property set to the same value. */
|
||||
number_of_windows = fghGetWindowProperty(**window_ptr_1,
|
||||
wm_check,
|
||||
XA_WINDOW,
|
||||
(unsigned char **) window_ptr_2);
|
||||
if ((number_of_windows == 1) && (**window_ptr_1 == **window_ptr_2))
|
||||
{
|
||||
Window ** window_ptr_2;
|
||||
|
||||
window_ptr_2 = malloc(sizeof(Window *));
|
||||
|
||||
/* Check that the window has the same property set to the same value. */
|
||||
number_of_windows = fghGetWindowProperty(**window_ptr_1,
|
||||
wm_check,
|
||||
XA_WINDOW,
|
||||
(unsigned char **) window_ptr_2);
|
||||
if ((number_of_windows == 1) && (**window_ptr_1 == **window_ptr_2))
|
||||
{
|
||||
/* NET WM compliant */
|
||||
net_wm_supported = 1;
|
||||
}
|
||||
|
||||
XFree(*window_ptr_2);
|
||||
free(window_ptr_2);
|
||||
/* NET WM compliant */
|
||||
net_wm_supported = 1;
|
||||
}
|
||||
|
||||
XFree(*window_ptr_1);
|
||||
free(window_ptr_1);
|
||||
XFree(*window_ptr_2);
|
||||
free(window_ptr_2);
|
||||
}
|
||||
|
||||
return net_wm_supported;
|
||||
XFree(*window_ptr_1);
|
||||
free(window_ptr_1);
|
||||
|
||||
return net_wm_supported;
|
||||
}
|
||||
|
||||
/* Check if "hint" is present in "property" for "window". */
|
||||
|
|
@ -216,8 +216,12 @@ void fgPlatformInitialize( const char* displayName )
|
|||
/* Create the state and full screen atoms */
|
||||
fgDisplay.pDisplay.State = None;
|
||||
fgDisplay.pDisplay.StateFullScreen = None;
|
||||
fgDisplay.pDisplay.NetWMPid = None;
|
||||
fgDisplay.pDisplay.ClientMachine = None;
|
||||
|
||||
if (fghNetWMSupported())
|
||||
fgDisplay.pDisplay.NetWMSupported = fghNetWMSupported();
|
||||
|
||||
if (fgDisplay.pDisplay.NetWMSupported)
|
||||
{
|
||||
const Atom supported = fghGetAtom("_NET_SUPPORTED");
|
||||
const Atom state = fghGetAtom("_NET_WM_STATE");
|
||||
|
|
@ -236,6 +240,9 @@ void fgPlatformInitialize( const char* displayName )
|
|||
fgDisplay.pDisplay.StateFullScreen = full_screen;
|
||||
}
|
||||
}
|
||||
|
||||
fgDisplay.pDisplay.NetWMPid = fghGetAtom("_NET_WM_PID");
|
||||
fgDisplay.pDisplay.ClientMachine = fghGetAtom("WM_CLIENT_MACHINE");
|
||||
}
|
||||
|
||||
/* Get start time */
|
||||
|
|
|
|||
|
|
@ -62,6 +62,9 @@ struct tagSFG_PlatformDisplay
|
|||
Atom DeleteWindow; /* The window deletion atom */
|
||||
Atom State; /* The state atom */
|
||||
Atom StateFullScreen; /* The full screen atom */
|
||||
int NetWMSupported; /* Flag for EWMH Window Managers */
|
||||
Atom NetWMPid; /* The _NET_WM_PID atom */
|
||||
Atom ClientMachine; /* The client machine name atom */
|
||||
|
||||
#ifdef HAVE_X11_EXTENSIONS_XRANDR_H
|
||||
int prev_xsz, prev_ysz;
|
||||
|
|
|
|||
|
|
@ -28,8 +28,9 @@
|
|||
|
||||
#define FREEGLUT_BUILDING_LIB
|
||||
#include <GL/freeglut.h>
|
||||
#include <limits.h> /* LONG_MAX */
|
||||
#include <unistd.h> /* usleep */
|
||||
#include <limits.h> /* LONG_MAX */
|
||||
#include <unistd.h> /* usleep, gethostname, getpid */
|
||||
#include <sys/types.h> /* pid_t */
|
||||
#include "../fg_internal.h"
|
||||
|
||||
#ifdef EGL_VERSION_1_0
|
||||
|
|
@ -340,6 +341,41 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title,
|
|||
XSetWMProtocols( fgDisplay.pDisplay.Display, window->Window.Handle,
|
||||
&fgDisplay.pDisplay.DeleteWindow, 1 );
|
||||
|
||||
if (fgDisplay.pDisplay.NetWMSupported
|
||||
&& fgDisplay.pDisplay.NetWMPid != None
|
||||
&& fgDisplay.pDisplay.ClientMachine != None)
|
||||
{
|
||||
char hostname[HOST_NAME_MAX];
|
||||
pid_t pid = getpid();
|
||||
|
||||
if (pid > 0 && gethostname(hostname, sizeof(hostname)) > -1)
|
||||
{
|
||||
hostname[sizeof(hostname) - 1] = '\0';
|
||||
|
||||
XChangeProperty(
|
||||
fgDisplay.pDisplay.Display,
|
||||
window->Window.Handle,
|
||||
fgDisplay.pDisplay.NetWMPid,
|
||||
XA_CARDINAL,
|
||||
32,
|
||||
PropModeReplace,
|
||||
(unsigned char *) &pid,
|
||||
1
|
||||
);
|
||||
|
||||
XChangeProperty(
|
||||
fgDisplay.pDisplay.Display,
|
||||
window->Window.Handle,
|
||||
fgDisplay.pDisplay.ClientMachine,
|
||||
XA_STRING,
|
||||
8,
|
||||
PropModeReplace,
|
||||
(unsigned char *) hostname,
|
||||
strlen(hostname)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef EGL_VERSION_1_0
|
||||
fghPlatformOpenWindowEGL(window);
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -889,6 +889,19 @@ typedef void ( * PFNGLXCOPYIMAGESUBDATANVPROC) (Display *dpy, GLXContext srcCtx,
|
|||
|
||||
#endif /* GLX_NV_copy_image */
|
||||
|
||||
/* ------------------------ GLX_NV_delay_before_swap ----------------------- */
|
||||
|
||||
#ifndef GLX_NV_delay_before_swap
|
||||
#define GLX_NV_delay_before_swap 1
|
||||
|
||||
typedef Bool ( * PFNGLXDELAYBEFORESWAPNVPROC) (Display* dpy, GLXDrawable drawable, GLfloat seconds);
|
||||
|
||||
#define glXDelayBeforeSwapNV GLXEW_GET_FUN(__glewXDelayBeforeSwapNV)
|
||||
|
||||
#define GLXEW_NV_delay_before_swap GLXEW_GET_VAR(__GLXEW_NV_delay_before_swap)
|
||||
|
||||
#endif /* GLX_NV_delay_before_swap */
|
||||
|
||||
/* -------------------------- GLX_NV_float_buffer -------------------------- */
|
||||
|
||||
#ifndef GLX_NV_float_buffer
|
||||
|
|
@ -1483,6 +1496,8 @@ GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA;
|
|||
|
||||
GLXEW_FUN_EXPORT PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV;
|
||||
|
||||
GLXEW_FUN_EXPORT PFNGLXDELAYBEFORESWAPNVPROC __glewXDelayBeforeSwapNV;
|
||||
|
||||
GLXEW_FUN_EXPORT PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV;
|
||||
GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV;
|
||||
|
||||
|
|
@ -1607,6 +1622,7 @@ GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_release_buffers;
|
|||
GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_set_3dfx_mode;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_swap_control;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_copy_image;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_delay_before_swap;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_float_buffer;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_multisample_coverage;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_present_video;
|
||||
|
|
|
|||
|
|
@ -12570,6 +12570,8 @@ PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA = NULL;
|
|||
|
||||
PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV = NULL;
|
||||
|
||||
PFNGLXDELAYBEFORESWAPNVPROC __glewXDelayBeforeSwapNV = NULL;
|
||||
|
||||
PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV = NULL;
|
||||
PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV = NULL;
|
||||
|
||||
|
|
@ -12691,6 +12693,7 @@ GLboolean __GLXEW_MESA_release_buffers = GL_FALSE;
|
|||
GLboolean __GLXEW_MESA_set_3dfx_mode = GL_FALSE;
|
||||
GLboolean __GLXEW_MESA_swap_control = GL_FALSE;
|
||||
GLboolean __GLXEW_NV_copy_image = GL_FALSE;
|
||||
GLboolean __GLXEW_NV_delay_before_swap = GL_FALSE;
|
||||
GLboolean __GLXEW_NV_float_buffer = GL_FALSE;
|
||||
GLboolean __GLXEW_NV_multisample_coverage = GL_FALSE;
|
||||
GLboolean __GLXEW_NV_present_video = GL_FALSE;
|
||||
|
|
@ -13034,6 +13037,19 @@ static GLboolean _glewInit_GLX_NV_copy_image (GLXEW_CONTEXT_ARG_DEF_INIT)
|
|||
|
||||
#endif /* GLX_NV_copy_image */
|
||||
|
||||
#ifdef GLX_NV_delay_before_swap
|
||||
|
||||
static GLboolean _glewInit_GLX_NV_delay_before_swap (GLXEW_CONTEXT_ARG_DEF_INIT)
|
||||
{
|
||||
GLboolean r = GL_FALSE;
|
||||
|
||||
r = ((glXDelayBeforeSwapNV = (PFNGLXDELAYBEFORESWAPNVPROC)glewGetProcAddress((const GLubyte*)"glXDelayBeforeSwapNV")) == NULL) || r;
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
#endif /* GLX_NV_delay_before_swap */
|
||||
|
||||
#ifdef GLX_NV_float_buffer
|
||||
|
||||
#endif /* GLX_NV_float_buffer */
|
||||
|
|
@ -13515,6 +13531,10 @@ GLenum glxewContextInit (GLXEW_CONTEXT_ARG_DEF_LIST)
|
|||
CONST_CAST(GLXEW_NV_copy_image) = _glewSearchExtension("GLX_NV_copy_image", extStart, extEnd);
|
||||
if (glewExperimental || GLXEW_NV_copy_image) CONST_CAST(GLXEW_NV_copy_image) = !_glewInit_GLX_NV_copy_image(GLEW_CONTEXT_ARG_VAR_INIT);
|
||||
#endif /* GLX_NV_copy_image */
|
||||
#ifdef GLX_NV_delay_before_swap
|
||||
CONST_CAST(GLXEW_NV_delay_before_swap) = _glewSearchExtension("GLX_NV_delay_before_swap", extStart, extEnd);
|
||||
if (glewExperimental || GLXEW_NV_delay_before_swap) CONST_CAST(GLXEW_NV_delay_before_swap) = !_glewInit_GLX_NV_delay_before_swap(GLEW_CONTEXT_ARG_VAR_INIT);
|
||||
#endif /* GLX_NV_delay_before_swap */
|
||||
#ifdef GLX_NV_float_buffer
|
||||
CONST_CAST(GLXEW_NV_float_buffer) = _glewSearchExtension("GLX_NV_float_buffer", extStart, extEnd);
|
||||
#endif /* GLX_NV_float_buffer */
|
||||
|
|
@ -18169,6 +18189,13 @@ GLboolean glxewIsSupported (const char* name)
|
|||
continue;
|
||||
}
|
||||
#endif
|
||||
#ifdef GLX_NV_delay_before_swap
|
||||
if (_glewStrSame3(&pos, &len, (const GLubyte*)"delay_before_swap", 17))
|
||||
{
|
||||
ret = GLXEW_NV_delay_before_swap;
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
#ifdef GLX_NV_float_buffer
|
||||
if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_buffer", 12))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -8289,6 +8289,17 @@ static void _glewInfo_GLX_NV_copy_image (void)
|
|||
|
||||
#endif /* GLX_NV_copy_image */
|
||||
|
||||
#ifdef GLX_NV_delay_before_swap
|
||||
|
||||
static void _glewInfo_GLX_NV_delay_before_swap (void)
|
||||
{
|
||||
glewPrintExt("GLX_NV_delay_before_swap", GLXEW_NV_delay_before_swap, glxewIsSupported("GLX_NV_delay_before_swap"), glxewGetExtension("GLX_NV_delay_before_swap"));
|
||||
|
||||
glewInfoFunc("glXDelayBeforeSwapNV", glXDelayBeforeSwapNV == NULL);
|
||||
}
|
||||
|
||||
#endif /* GLX_NV_delay_before_swap */
|
||||
|
||||
#ifdef GLX_NV_float_buffer
|
||||
|
||||
static void _glewInfo_GLX_NV_float_buffer (void)
|
||||
|
|
@ -10465,6 +10476,9 @@ static void glxewInfo ()
|
|||
#ifdef GLX_NV_copy_image
|
||||
_glewInfo_GLX_NV_copy_image();
|
||||
#endif /* GLX_NV_copy_image */
|
||||
#ifdef GLX_NV_delay_before_swap
|
||||
_glewInfo_GLX_NV_delay_before_swap();
|
||||
#endif /* GLX_NV_delay_before_swap */
|
||||
#ifdef GLX_NV_float_buffer
|
||||
_glewInfo_GLX_NV_float_buffer();
|
||||
#endif /* GLX_NV_float_buffer */
|
||||
|
|
|
|||
|
|
@ -1,19 +0,0 @@
|
|||
Copyright (c) 2004-2013 Sergey Lyubka
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
# Project Mission
|
||||
|
||||
Project mission is to provide simple, functional, embeddable web server to
|
||||
make it easy for application and device developers to implement web interface
|
||||
for their application and devices, and to offer a simple web development
|
||||
environment.
|
||||
|
||||
# Overview
|
||||
|
||||
To accomplish it's mission, Mongoose keeps balance on functionality and
|
||||
simplicity by carefully selected list of features:
|
||||
|
||||
- Liberal, commercial-friendly
|
||||
[MIT license](http://en.wikipedia.org/wiki/MIT_License)
|
||||
- Works on Windows, Mac, UNIX, iPhone, Android, and many other platforms
|
||||
- Support for CGI, SSL, SSI, Digest (MD5) authorization, Websocket, WEbDAV
|
||||
- Lua server pages with Sqlite, see
|
||||
[page.lp](https://github.com/valenok/mongoose/blob/master/test/page.lp)
|
||||
- Resumed download, URL rewrite, IP-based ACL, Windows service
|
||||
- Excluding files from serving by URI pattern (file blacklist)
|
||||
- Download speed limit based on client subnet or URI pattern
|
||||
- Small footprint: executable size is 50 kB on Linux 2.6 i386 system
|
||||
- 130 kilobytes Windows executable with all of the above and no dependencies
|
||||
- Simple and clean embedding API,
|
||||
[mongoose.h](https://github.com/valenok/mongoose/blob/master/mongoose.h).
|
||||
The source is in single
|
||||
[mongoose.c](https://github.com/valenok/mongoose/blob/master/mongoose.c) file
|
||||
to make things easy
|
||||
- Embedding examples:
|
||||
[hello.c](https://github.com/valenok/mongoose/blob/master/examples/hello.c),
|
||||
[post.c](https://github.com/valenok/mongoose/blob/master/examples/post.c),
|
||||
[upload.c](https://github.com/valenok/mongoose/blob/master/examples/upload.c),
|
||||
[websocket.c](https://github.com/valenok/mongoose/blob/master/examples/websocket.c)
|
||||
- HTTP client functionality for embedded usage, capable of
|
||||
sending arbitrary HTTP/HTTPS requests
|
||||
- [User Manual](https://github.com/valenok/mongoose/blob/master/UserManual.md)
|
||||
|
||||
Continuous build status: 
|
||||
|
||||
Questions can be asked at
|
||||
[mongoose-users@google.com](http://groups.google.com/group/mongoose-users)
|
||||
mailing list.
|
||||
|
||||
|
||||
# Keep Sergey happy
|
||||
|
||||
I am Sergey Lyubka, a software engineer from Galway, Ireland. I started
|
||||
working on Mongoose in 2004, and since then continuously improve it,
|
||||
investing thousands of hours of work. My other project I'm contributing to the
|
||||
community for free is
|
||||
[Super Light Regular Expression library](http://code.google.com/p/slre).
|
||||
|
||||
If you feel grateful for the stuff I've done, you can buy me a book from my
|
||||
[Amazon wishlist](http://amzn.com/w/1OC2ZCPTQYIEP?sort=priority). Many thanks
|
||||
to all who already did so: T.Barmann, D.Hughes, J.C.Sloan, R.Romeo,
|
||||
L.E.Spencer, S.Kotay, R.M.Shorter, W.Mar, J.Wilander, Santa from Memphis,
|
||||
S.Davies and 8 others.
|
||||
Appreciated guys, you keep my brains going! Cash is also welcome indeed.
|
||||
Press [<img src="http://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif">](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DGZ2FMP95TAL6)
|
||||
button to donate. Donation progress: 710/1000 €
|
||||
(thanks to O.M.Vilhunen, C.Radik, G.Woodcock, M.Szczepkowski,
|
||||
Eternal Lands Dev Team, T.Tollet, C.Tangerino, G.Karsai, A.Bourgett,
|
||||
C.Blakemore, D.Fonaryov, T.Andrle, O.IJsselmuiden, R.Womack, M.Tomlinson,
|
||||
A.Slåttå, L.Farrell, J.D.P.Ballestero, V.Albaev, B.Harker, T.Scheffel, H.Klein,
|
||||
R.Merit, T.Bennett, H.Solis, A.Zincenko, M.S., S.Krul, K.Cooke, S.McCallum,
|
||||
F.Morenius)
|
||||
|
||||

|
||||
|
|
@ -1,553 +0,0 @@
|
|||
# Overview
|
||||
|
||||
Mongoose is small and easy to use web server. It is self-contained, and does
|
||||
not require any external software to run.
|
||||
|
||||
On Windows, mongoose iconifies itself to the system tray icon when started.
|
||||
Right-click on the icon pops up a menu, where it is possible to stop
|
||||
mongoose, or configure it, or install it as Windows service. The easiest way
|
||||
to share a folder on Windows is to copy `mongoose.exe` to a folder,
|
||||
double-click the exe, and launch a browser at
|
||||
[http://localhost:8080](http://localhost:8080). Note that 'localhost' should
|
||||
be changed to a machine's name if a folder is accessed from other computer.
|
||||
|
||||
On UNIX and Mac, mongoose is a command line utility. Running `mongoose` in
|
||||
terminal, optionally followed by configuration parameters
|
||||
(`mongoose [OPTIONS]`) or configuration file name
|
||||
(`mongoose [config_file_name]`) starts the
|
||||
web server. Mongoose does not detach from terminal. Pressing `Ctrl-C` keys
|
||||
would stop the server.
|
||||
|
||||
When started, mongoose first searches for the configuration file.
|
||||
If configuration file is specified explicitly in the command line, i.e.
|
||||
`mongoose path_to_config_file`, then specified configuration file is used.
|
||||
Otherwise, mongoose would search for file `mongoose.conf` in the same directory
|
||||
where binary is located, and use it. Configuration file can be absent.
|
||||
|
||||
|
||||
Configuration file is a sequence of lines, each line containing
|
||||
command line argument name and it's value. Empty lines, and lines beginning
|
||||
with `#`, are ignored. Here is the example of `mongoose.conf` file:
|
||||
|
||||
document_root c:\www
|
||||
listening_ports 8080,8043s
|
||||
ssl_certificate c:\mongoose\ssl_cert.pem
|
||||
|
||||
When configuration file is processed, mongoose process command line arguments,
|
||||
if they are specified. Command line arguments therefore can override
|
||||
configuration file settings. Command line arguments must start with `-`.
|
||||
For example, if `mongoose.conf` has line
|
||||
`document_root /var/www`, and mongoose has been started as
|
||||
`mongoose -document_root /etc`, then `/etc` directory will be served as
|
||||
document root, because command line options take priority over
|
||||
configuration file. Configuration options section below provide a good
|
||||
overview of Mongoose features.
|
||||
|
||||
Note that configuration options on the command line must start with `-`,
|
||||
but their names are the same as in the config file. All option names are
|
||||
listed in the next section. Thus, the following two setups are equivalent:
|
||||
|
||||
# Using command line arguments
|
||||
$ mongoose -listening_ports 1234 -document_root /var/www
|
||||
|
||||
# Using config file
|
||||
$ cat mongoose.conf
|
||||
listening_ports 1234
|
||||
document_root /var/www
|
||||
$ mongoose
|
||||
|
||||
Mongoose can also be used to modify `.htpasswd` passwords file:
|
||||
|
||||
mongoose -A <htpasswd_file> <realm> <user> <passwd>
|
||||
|
||||
Unlike other web servers, mongoose does not require CGI scripts be located in
|
||||
a special directory. CGI scripts can be anywhere. CGI (and SSI) files are
|
||||
recognized by the file name pattern. Mongoose uses shell-like glob
|
||||
patterns. Pattern match starts at the beginning of the string, so essentially
|
||||
patterns are prefix patterns. Syntax is as follows:
|
||||
|
||||
** Matches everything
|
||||
* Matches everything but slash character, '/'
|
||||
? Matches any character
|
||||
$ Matches the end of the string
|
||||
| Matches if pattern on the left side or the right side matches.
|
||||
|
||||
All other characters in the pattern match themselves. Examples:
|
||||
|
||||
**.cgi$ Any string that ends with .cgi
|
||||
/foo Any string that begins with /foo
|
||||
**a$|**b$ Any string that ends with a or b
|
||||
|
||||
# Configuration Options
|
||||
|
||||
Below is a list of configuration options Mongoose understands. Every option
|
||||
is followed by it's default value. If default value is not present, then
|
||||
it is empty.
|
||||
|
||||
### cgi_pattern `**.cgi$|**.pl$|**.php$`
|
||||
All files that match `cgi_pattern` are treated as CGI files. Default pattern
|
||||
allows CGI files be anywhere. To restrict CGIs to a certain directory,
|
||||
use `/path/to/cgi-bin/**.cgi` as pattern. Note that full file path is
|
||||
matched against the pattern, not the URI.
|
||||
|
||||
### cgi_environment
|
||||
Extra environment variables to be passed to the CGI script in
|
||||
addition to standard ones. The list must be comma-separated list
|
||||
of name=value pairs, like this: `VARIABLE1=VALUE1,VARIABLE2=VALUE2`.
|
||||
|
||||
### put\_delete\_auth\_file
|
||||
Passwords file for PUT and DELETE requests. Without it, PUT and DELETE requests
|
||||
will fail.
|
||||
|
||||
### cgi_interpreter
|
||||
Path to an executable to use as CGI interpreter for __all__ CGI scripts
|
||||
regardless script extension. If this option is not set (which is a default),
|
||||
Mongoose looks at first line of a CGI script,
|
||||
[shebang line](http://en.wikipedia.org/wiki/Shebang_(Unix)), for an interpreter.
|
||||
|
||||
For example, if both PHP and perl CGIs are used, then
|
||||
`#!/path/to/php-cgi.exe` and `#!/path/to/perl.exe` must be first lines of the
|
||||
respective CGI scripts. Note that paths should be either full file paths,
|
||||
or file paths relative to the current working directory of mongoose server.
|
||||
If mongoose is started by mouse double-click on Windows, current working
|
||||
directory is a directory where mongoose executable is located.
|
||||
|
||||
If all CGIs use the same interpreter, for example they are all PHP, then
|
||||
`cgi_interpreter` can be set to the path to `php-cgi.exe` executable and
|
||||
shebang line in the CGI scripts can be omitted.
|
||||
Note that PHP scripts must use `php-cgi.exe` executable, not `php.exe`.
|
||||
|
||||
### protect_uri
|
||||
Comma separated list of URI=PATH pairs, specifying that given
|
||||
URIs must be protected with respected password files. Paths must be full
|
||||
file paths.
|
||||
|
||||
### authentication_domain `mydomain.com`
|
||||
Authorization realm used in `.htpasswd` authorization.
|
||||
|
||||
### ssi_pattern `**.shtml$|**.shtm$`
|
||||
All files that match `ssi_pattern` are treated as SSI.
|
||||
|
||||
Server Side Includes (SSI) is a simple interpreted server-side scripting
|
||||
language which is most commonly used to include the contents of a file into
|
||||
a web page. It can be useful when it is desirable to include a common piece
|
||||
of code throughout a website, for example, headers and footers.
|
||||
|
||||
In order for a webpage to recognize an SSI-enabled HTML file, the filename
|
||||
should end with a special extension, by default the extension should be
|
||||
either `.shtml` or `.shtm`.
|
||||
|
||||
Unknown SSI directives are silently ignored by mongoose. Currently, two SSI
|
||||
directives are supported, `<!--#include ...>` and
|
||||
`<!--#exec "command">`. Note that `<!--#include ...>` directive supports
|
||||
three path specifications:
|
||||
|
||||
<!--#include virtual="path"> Path is relative to web server root
|
||||
<!--#include file="path"> Path is relative to web server working dir
|
||||
<!--#include "path"> Path is relative to current document
|
||||
|
||||
The `include` directive may be used to include the contents of a file or the
|
||||
result of running a CGI script. The `exec` directive is used to execute a
|
||||
command on a server, and show command's output. Example:
|
||||
|
||||
<!--#exec "ls -l" -->
|
||||
|
||||
For more information on Server Side Includes, take a look at the Wikipedia:
|
||||
[Server Side Includes](http://en.wikipedia.org/wiki/Server_Side_Includes)
|
||||
|
||||
### throttle
|
||||
Limit download speed for clients. `throttle` is a comma-separated
|
||||
list of key=value pairs, where key could be:
|
||||
|
||||
* limit speed for all connections
|
||||
x.x.x.x/mask limit speed for specified subnet
|
||||
uri_prefix_pattern limit speed for given URIs
|
||||
|
||||
The value is a floating-point number of bytes per second, optionally
|
||||
followed by a `k` or `m` character, meaning kilobytes and
|
||||
megabytes respectively. A limit of 0 means unlimited rate. The
|
||||
last matching rule wins. Examples:
|
||||
|
||||
*=1k,10.0.0.0/8=0 limit all accesses to 1 kilobyte per second,
|
||||
but give connections from 10.0.0.0/8 subnet
|
||||
unlimited speed
|
||||
|
||||
/downloads/=5k limit accesses to all URIs in `/downloads/` to
|
||||
5 kilobytes per secods. All other accesses are unlimited
|
||||
|
||||
### access\_log\_file
|
||||
Path to a file for access logs. Either full path, or relative to current
|
||||
working directory. If absent (default), then accesses are not logged.
|
||||
|
||||
### error\_log\_file
|
||||
Path to a file for error logs. Either full path, or relative to current
|
||||
working directory. If absent (default), then errors are not logged.
|
||||
|
||||
### enable\_directory\_listing `yes`
|
||||
Enable directory listing, either `yes` or `no`.
|
||||
|
||||
### enable\_keep\_alive `no`
|
||||
Enable connection keep alive, either `yes` or `no`.
|
||||
|
||||
Experimental feature. Allows clients to reuse TCP connection for
|
||||
subsequent HTTP requests, which improves performance.
|
||||
For this to work when using request handlers it's important to add the correct
|
||||
Content-Length HTTP header for each request. If this is forgotten the client
|
||||
will time out.
|
||||
|
||||
|
||||
### global\_auth\_file
|
||||
Path to a global passwords file, either full path or relative to the current
|
||||
working directory. If set, per-directory `.htpasswd` files are ignored,
|
||||
and all requests are authorised against that file.
|
||||
|
||||
The file has to include the realm set through `authentication_domain` and the password in digest format:
|
||||
|
||||
user:realm:digest
|
||||
test:test.com:ce0220efc2dd2fad6185e1f1af5a4327
|
||||
|
||||
(e.g. use [this generator](http://www.askapache.com/online-tools/htpasswd-generator))
|
||||
|
||||
### index_files `index.html,index.htm,index.cgi,index.shtml,index.php`
|
||||
Comma-separated list of files to be treated as directory index
|
||||
files.
|
||||
|
||||
### access\_control\_list
|
||||
An Access Control List (ACL) allows restrictions to be put on the list of IP
|
||||
addresses which have access to the web server. In the case of the Mongoose
|
||||
web server, the ACL is a comma separated list of IP subnets, where each
|
||||
subnet is prepended by either a `-` or a `+` sign. A plus sign means allow,
|
||||
where a minus sign means deny. If a subnet mask is omitted, such as `-1.2.3.4`,
|
||||
this means to deny only that single IP address.
|
||||
|
||||
Subnet masks may vary from 0 to 32, inclusive. The default setting is to allow
|
||||
all accesses. On each request the full list is traversed, and
|
||||
the last match wins. Examples:
|
||||
|
||||
-0.0.0.0/0,+192.168/16 deny all acccesses, only allow 192.168/16 subnet
|
||||
|
||||
To learn more about subnet masks, see the
|
||||
[Wikipedia page on Subnetwork](http://en.wikipedia.org/wiki/Subnetwork)
|
||||
|
||||
### extra\_mime\_types
|
||||
Extra mime types to recognize, in form `extension1=type1,exten-
|
||||
sion2=type2,...`. Extension must include dot. Example:
|
||||
`.cpp=plain/text,.java=plain/text`
|
||||
|
||||
### listening_ports `8080`
|
||||
Comma-separated list of ports to listen on. If the port is SSL, a
|
||||
letter `s` must be appeneded, for example, `80,443s` will open
|
||||
port 80 and port 443, and connections on port 443 will be SSL-ed.
|
||||
For non-SSL ports, it is allowed to append letter `r`, meaning 'redirect'.
|
||||
Redirect ports will redirect all their traffic to the first configured
|
||||
SSL port. For example, if `listening_ports` is `80r,443s`, then all
|
||||
HTTP traffic coming at port 80 will be redirected to HTTPS port 443.
|
||||
|
||||
It is possible to specify an IP address to bind to. In this case,
|
||||
an IP address and a colon must be prepended to the port number.
|
||||
For example, to bind to a loopback interface on port 80 and to
|
||||
all interfaces on HTTPS port 443, use `127.0.0.1:80,443s`.
|
||||
|
||||
### document_root `.`
|
||||
A directory to serve. By default, currect directory is served. Current
|
||||
directory is commonly referenced as dot (`.`).
|
||||
|
||||
### ssl_certificate
|
||||
Path to SSL certificate file. This option is only required when at least one
|
||||
of the `listening_ports` is SSL. The file must be in PEM format,
|
||||
and it must have both private key and certificate, see for example
|
||||
[ssl_cert.pem](https://github.com/valenok/mongoose/blob/master/build/ssl_cert.pem)
|
||||
|
||||
### num_threads `50`
|
||||
Number of worker threads. Mongoose handles each incoming connection in a
|
||||
separate thread. Therefore, the value of this option is effectively a number
|
||||
of concurrent HTTP connections Mongoose can handle.
|
||||
|
||||
### run\_as\_user
|
||||
Switch to given user credentials after startup. Usually, this option is
|
||||
required when mongoose needs to bind on privileged port on UNIX. To do
|
||||
that, mongoose needs to be started as root. But running as root is a bad idea,
|
||||
therefore this option can be used to drop privileges. Example:
|
||||
|
||||
mongoose -listening_ports 80 -run_as_user nobody
|
||||
|
||||
### url\_rewrite\_patterns
|
||||
Comma-separated list of URL rewrites in the form of
|
||||
`uri_pattern=file_or_directory_path`. When Mongoose receives the request,
|
||||
it constructs the file name to show by combining `document_root` and the URI.
|
||||
However, if the rewrite option is used and `uri_pattern` matches the
|
||||
requested URI, then `document_root` is ignored. Insted,
|
||||
`file_or_directory_path` is used, which should be a full path name or
|
||||
a path relative to the web server's current working directory. Note that
|
||||
`uri_pattern`, as all mongoose patterns, is a prefix pattern.
|
||||
|
||||
This makes it possible to serve many directories outside from `document_root`,
|
||||
redirect all requests to scripts, and do other tricky things. For example,
|
||||
to redirect all accesses to `.doc` files to a special script, do:
|
||||
|
||||
mongoose -url_rewrite_patterns **.doc$=/path/to/cgi-bin/handle_doc.cgi
|
||||
|
||||
Or, to imitate user home directories support, do:
|
||||
|
||||
mongoose -url_rewrite_patterns /~joe/=/home/joe/,/~bill=/home/bill/
|
||||
|
||||
### hide\_files\_patterns
|
||||
A pattern for the files to hide. Files that match the pattern will not
|
||||
show up in directory listing and return `404 Not Found` if requested. Pattern
|
||||
must be for a file name only, not including directory name. Example:
|
||||
|
||||
mongoose -hide_files_patterns secret.txt|even_more_secret.txt
|
||||
|
||||
# Lua Server Pages
|
||||
Pre-built Windows and Mac mongoose binaries have built-in Lua Server Pages
|
||||
support. That means it is possible to write PHP-like scripts with mongoose,
|
||||
using Lua programming language instead of PHP. Lua is known
|
||||
for it's speed and small size. Mongoose uses Lua version 5.2.1, the
|
||||
documentation for it can be found at
|
||||
[Lua 5.2 reference manual](http://www.lua.org/manual/5.2/).
|
||||
|
||||
To create a Lua Page, make sure a file has `.lp` extension. For example,
|
||||
let's say it is going to be `my_page.lp`. The contents of the file, just like
|
||||
with PHP, is HTML with embedded Lua code. Lua code must be enclosed in
|
||||
`<? ?>` blocks, and can appear anywhere on the page. For example, to
|
||||
print current weekday name, one can write:
|
||||
|
||||
<p>
|
||||
<span>Today is:</span>
|
||||
<? mg.write(os.date("%A")) ?>
|
||||
</p>
|
||||
|
||||
Note that this example uses function `mg.write()`, which prints data to the
|
||||
web page. Using function `mg.write()` is the way to generate web content from
|
||||
inside Lua code. In addition to `mg.write()`, all standard library functions
|
||||
are accessible from the Lua code (please check reference manual for details),
|
||||
and also information about the request is available in `mg.request_info` object,
|
||||
like request method, all headers, etcetera. Please refer to
|
||||
`struct mg_request_info` definition in
|
||||
[mongoose.h](https://github.com/valenok/mongoose/blob/master/mongoose.h)
|
||||
to see what kind of information is present in `mg.request_info` object. Also,
|
||||
[page.lp](https://github.com/valenok/mongoose/blob/master/test/page.lp) and
|
||||
[prime_numbers.lp](https://github.com/valenok/mongoose/blob/master/examples/lua/prime_numbers.lp)
|
||||
contains some example code that uses `request_info` and other functions(form submitting for example).
|
||||
|
||||
Mongoose exports the following to the Lua server page:
|
||||
|
||||
mg.read() -- reads a chunk from POST data, returns it as a string
|
||||
mg.write(str) -- writes string to the client
|
||||
mg.include(path) -- sources another Lua file
|
||||
mg.redirect(uri) -- internal redirect to a given URI
|
||||
mg.onerror(msg) -- error handler, can be overridden
|
||||
mg.version -- a string that holds Mongoose version
|
||||
mg.request_info -- a table with request information
|
||||
|
||||
-- Connect to the remote TCP server. This function is an implementation
|
||||
-- of simple socket interface. It returns a socket object with three
|
||||
-- methods: send, recv, close, which are synchronous (blocking).
|
||||
-- connect() throws an exception on connection error.
|
||||
connect(host, port, use_ssl)
|
||||
|
||||
-- Example of using connect() interface:
|
||||
local host = 'code.google.com' -- IP address or domain name
|
||||
local ok, sock = pcall(connect, host, 80, 1)
|
||||
if ok then
|
||||
sock:send('GET /p/mongoose/ HTTP/1.0\r\n' ..
|
||||
'Host: ' .. host .. '\r\n\r\n')
|
||||
local reply = sock:recv()
|
||||
sock:close()
|
||||
-- reply now contains the web page https://code.google.com/p/mongoose
|
||||
end
|
||||
|
||||
|
||||
**IMPORTANT: Mongoose does not send HTTP headers for Lua pages. Therefore,
|
||||
every Lua Page must begin with HTTP reply line and headers**, like this:
|
||||
|
||||
<? print('HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n') ?>
|
||||
<html><body>
|
||||
... the rest of the web page ...
|
||||
|
||||
To serve Lua Page, mongoose creates Lua context. That context is used for
|
||||
all Lua blocks within the page. That means, all Lua blocks on the same page
|
||||
share the same context. If one block defines a variable, for example, that
|
||||
variable is visible in the block that follows.
|
||||
|
||||
# Common Problems
|
||||
- PHP doesn't work - getting empty page, or 'File not found' error. The
|
||||
reason for that is wrong paths to the interpreter. Remember that with PHP,
|
||||
correct interpreter is `php-cgi.exe` (`php-cgi` on UNIX). Solution: specify
|
||||
full path to the PHP interpreter, e.g.:
|
||||
`mongoose -cgi_interpreter /full/path/to/php-cgi`
|
||||
|
||||
- Mongoose fails to start. If Mongoose exits immediately when run, this
|
||||
usually indicates a syntax error in the configuration file
|
||||
(named `mongoose.conf` by default) or the command-line arguments.
|
||||
Syntax checking is omitted from Mongoose to keep its size low. However,
|
||||
the Manual should be of help. Note: the syntax changes from time to time,
|
||||
so updating the config file might be necessary after executable update.
|
||||
|
||||
- Embedding with OpenSSL on Windows might fail because of calling convention.
|
||||
To force Mongoose to use `__stdcall` convention, add `/Gz` compilation
|
||||
flag in Visual Studio compiler.
|
||||
|
||||
# Embedding
|
||||
Embedding Mongoose is easy. Copy
|
||||
[mongoose.c](https://github.com/valenok/mongoose/blob/master/mongoose.c) and
|
||||
[mongoose.h](https://github.com/valenok/mongoose/blob/master/mongoose.h)
|
||||
to your application's source tree and include them in the build. For
|
||||
example, your application's code lives in C++ file `my_app.cpp`, then on UNIX
|
||||
this command embeds Mongoose:
|
||||
|
||||
$ ls
|
||||
my_app.cpp mongoose.c mongoose.h
|
||||
$ g++ my_app.cc mongoose.c -o my_app
|
||||
|
||||
Somewhere in the application code, call `mg_start()` to start the server.
|
||||
Pass configuration options and event handlers to `mg_start()`.
|
||||
Mongoose then calls handlers when certain events happen.
|
||||
For example, when new request arrives, Mongoose calls `begin_request`
|
||||
handler function to let user handle the request. In the handler, user code
|
||||
can get all information about the request -- parsed headers, etcetera.
|
||||
|
||||
Mongoose API is logically divided in three categories: server setup/shutdown
|
||||
functions, functions to be used by user-written event handlers, and
|
||||
convenience utility functions.
|
||||
|
||||
### Starting and stopping embedded web server
|
||||
To start the embedded web server, call `mg_start()`. To stop it, call
|
||||
`mg_stop()`.
|
||||
|
||||
// This structure needs to be passed to mg_start(), to let mongoose know
|
||||
// which callbacks to invoke. For detailed description, see
|
||||
// https://github.com/valenok/mongoose/blob/master/UserManual.md
|
||||
struct mg_callbacks {
|
||||
int (*begin_request)(struct mg_connection *);
|
||||
void (*end_request)(const struct mg_connection *, int reply_status_code);
|
||||
int (*log_message)(const struct mg_connection *, const char *message);
|
||||
int (*init_ssl)(void *ssl_context);
|
||||
int (*websocket_connect)(const struct mg_connection *);
|
||||
void (*websocket_ready)(struct mg_connection *);
|
||||
int (*websocket_data)(struct mg_connection *);
|
||||
const char * (*open_file)(const struct mg_connection *,
|
||||
const char *path, size_t *data_len);
|
||||
void (*init_lua)(struct mg_connection *, void *lua_context);
|
||||
void (*upload)(struct mg_connection *, const char *file_name);
|
||||
int (*http_error)(struct mg_connection *, int status);
|
||||
};
|
||||
|
||||
[hello.c](https://github.com/valenok/mongoose/blob/master/examples/hello.c)
|
||||
provides a minimalistic example.
|
||||
|
||||
Common pattern is to implement `begin_request` callback, and serve static files
|
||||
from memory, and/or construct dynamic replies on the fly. Here is
|
||||
my [embed.c](https://gist.github.com/valenok/4714740) gist
|
||||
that shows how to easily any data can be embedded
|
||||
directly into the executable. If such data needs to be encrypted, then
|
||||
encrypted database or encryption dongles would be a better choice.
|
||||
|
||||
# Build on Android
|
||||
|
||||
This is a small guide to help you run mongoose on Android. Currently it is
|
||||
tested on the HTC Wildfire. If you have managed to run it on other devices
|
||||
as well, please comment or drop an email in the mailing list.
|
||||
Note : You dont need root access to run mongoose on Android.
|
||||
|
||||
- Download the source from the Downloads page.
|
||||
- Download the Android NDK from
|
||||
[here](http://developer.android.com/tools/sdk/ndk/index.html)
|
||||
- Make a folder (e.g. mongoose) and inside that make a folder named "jni".
|
||||
- Add `mongoose.h`, `mongoose.c` and `main.c` from the source to the jni folder.
|
||||
- Make a new file in the jni folder named "Android.mk".
|
||||
This is the make file for ndk-build.
|
||||
|
||||
Android.mk:
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := mongoose
|
||||
LOCAL_SRC_FILES := main.c mongoose.c
|
||||
include $(BUILD_EXECUTABLE)
|
||||
|
||||
- Run `./ndk-build -C /path/to/mongoose/`.
|
||||
This should generate mongoose/lib/armeabi/mongoose
|
||||
- Using the adb tool, push the generated mongoose binary to `/data/local`
|
||||
folder on device.
|
||||
- From adb shell, navigate to `/data/local` and execute `./mongoose`.
|
||||
- To test if the server is running fine, visit your web-browser and
|
||||
navigate to `http://127.0.0.1:8080` You should see the `Index of /` page.
|
||||
|
||||

|
||||
|
||||
|
||||
Notes:
|
||||
- jni stands for Java Native Interface. Read up on Android NDK if you want
|
||||
to know how to interact with the native C functions of mongoose in Android
|
||||
Java applications.
|
||||
- Download android-sdk for the adb tool.
|
||||
- TODO: A Java application that interacts with the native binary or a
|
||||
shared library.
|
||||
|
||||
# Mongoose internals
|
||||
|
||||
Mongoose is multithreaded web server. `mg_start()` function allocates
|
||||
web server context (`struct mg_context`), which holds all information
|
||||
about web server instance:
|
||||
|
||||
- configuration options. Note that mongoose makes internal copies of
|
||||
passed options.
|
||||
- SSL context, if any
|
||||
- user-defined callbacks
|
||||
- opened listening sockets
|
||||
- a queue for accepted sockets
|
||||
- mutexes and condition variables for inter-thread synchronization
|
||||
|
||||
When `mg_start()` returns, all initialization is quaranteed to be complete
|
||||
(e.g. listening ports are opened, SSL is initialized, etc). `mg_start()` starts
|
||||
two threads: a master thread, that accepts new connections, and several
|
||||
worker threads, that process accepted connections. The number of worker threads
|
||||
is configurable via `num_threads` configuration option. That number puts a
|
||||
limit on number of simultaneous requests that can be handled by mongoose.
|
||||
|
||||
When master thread accepts new connection, a new accepted socket (described by
|
||||
`struct socket`) it placed into the accepted sockets queue,
|
||||
which has size of 20 (see [code](https://github.com/valenok/mongoose/blob/3892e0199e6ca9613b160535d9d107ede09daa43/mongoose.c#L486)). Any idle worker thread
|
||||
can grab accepted sockets from that queue. If all worker threads are busy,
|
||||
master thread can accept and queue up to 20 more TCP connections,
|
||||
filling up the queue.
|
||||
In the attempt to queue next accepted connection, master thread blocks
|
||||
until there is space in a queue. When master thread is blocked on a
|
||||
full queue, TCP layer in OS can also queue incoming connection.
|
||||
The number is limited by the `listen()` call parameter on listening socket,
|
||||
which is `SOMAXCONN` in case of Mongoose, and depends on a platform.
|
||||
|
||||
Worker threads are running in an infinite loop, which in simplified form
|
||||
looks something like this:
|
||||
|
||||
static void *worker_thread() {
|
||||
while (consume_socket()) {
|
||||
process_new_connection();
|
||||
}
|
||||
}
|
||||
|
||||
Function `consume_socket()` gets new accepted socket from the mongoose socket
|
||||
queue, atomically removing it from the queue. If the queue is empty,
|
||||
`consume_socket()` blocks and waits until new sockets are placed in a queue
|
||||
by the master thread. `process_new_connection()` actually processes the
|
||||
connection, i.e. reads the request, parses it, and performs appropriate action
|
||||
depending on a parsed request.
|
||||
|
||||
Master thread uses `poll()` and `accept()` to accept new connections on
|
||||
listening sockets. `poll()` is used to avoid `FD_SETSIZE` limitation of
|
||||
`select()`. Since there are only a few listening sockets, there is no reason
|
||||
to use hi-performance alternatives like `epoll()` or `kqueue()`. Worker
|
||||
threads use blocking IO on accepted sockets for reading and writing data.
|
||||
All accepted sockets have `SO_RCVTIMEO` and `SO_SNDTIMEO` socket options set
|
||||
(controlled by `request_timeout_ms` mongoose option, 30 seconds default) which
|
||||
specify read/write timeout on client connection.
|
||||
|
||||
# Other Resources
|
||||
- Presentation made by Arnout Vandecappelle at FOSDEM 2011 on 2011-02-06
|
||||
in Brussels, Belgium, called
|
||||
"Creating secure web based user interfaces for Embedded Devices"
|
||||
([pdf](http://mind.be/content/110206_Web-ui.pdf) |
|
||||
[odp](http://mind.be/content/110206_Web-ui.odp))
|
||||
- Linux Journal article by Michel J.Hammel, 2010-04-01, called
|
||||
[Mongoose: an Embeddable Web Server in C](http://www.linuxjournal.com/article/10680)
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "mongoose.h"
|
||||
|
||||
// This function will be called by mongoose on every new request.
|
||||
static int begin_request_handler(struct mg_connection *conn) {
|
||||
const struct mg_request_info *request_info = mg_get_request_info(conn);
|
||||
char content[100];
|
||||
|
||||
// Prepare the message we're going to send
|
||||
int content_length = snprintf(content, sizeof(content),
|
||||
"Hello from mongoose! Remote port: %d",
|
||||
request_info->remote_port);
|
||||
|
||||
// Send HTTP reply to the client
|
||||
mg_printf(conn,
|
||||
"HTTP/1.1 200 OK\r\n"
|
||||
"Content-Type: text/plain\r\n"
|
||||
"Content-Length: %d\r\n" // Always set Content-Length
|
||||
"\r\n"
|
||||
"%s",
|
||||
content_length, content);
|
||||
|
||||
// Returning non-zero tells mongoose that our function has replied to
|
||||
// the client, and mongoose should not send client any more data.
|
||||
return 1;
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
struct mg_context *ctx;
|
||||
struct mg_callbacks callbacks;
|
||||
|
||||
// List of options. Last element must be NULL.
|
||||
const char *options[] = {"listening_ports", "8080", NULL};
|
||||
|
||||
// Prepare callbacks structure. We have only one callback, the rest are NULL.
|
||||
memset(&callbacks, 0, sizeof(callbacks));
|
||||
callbacks.begin_request = begin_request_handler;
|
||||
|
||||
// Start the web server.
|
||||
ctx = mg_start(&callbacks, NULL, options);
|
||||
|
||||
// Wait until user hits "enter". Server is running in separate thread.
|
||||
// Navigating to http://localhost:8080 will invoke begin_request_handler().
|
||||
getchar();
|
||||
|
||||
// Stop the server.
|
||||
mg_stop(ctx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,913 +0,0 @@
|
|||
// Copyright (c) 2004-2013 Sergey Lyubka
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#if defined(_WIN32)
|
||||
#define _CRT_SECURE_NO_WARNINGS // Disable deprecation warning in VS2005
|
||||
#else
|
||||
#define _XOPEN_SOURCE 600 // For PATH_MAX on linux
|
||||
#endif
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <stddef.h>
|
||||
#include <stdarg.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "mongoose.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#include <winsvc.h>
|
||||
#include <shlobj.h>
|
||||
|
||||
#ifndef PATH_MAX
|
||||
#define PATH_MAX MAX_PATH
|
||||
#endif
|
||||
|
||||
#ifndef S_ISDIR
|
||||
#define S_ISDIR(x) ((x) & _S_IFDIR)
|
||||
#endif
|
||||
|
||||
#define DIRSEP '\\'
|
||||
#define snprintf _snprintf
|
||||
#define vsnprintf _vsnprintf
|
||||
#define sleep(x) Sleep((x) * 1000)
|
||||
#define WINCDECL __cdecl
|
||||
#else
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#define DIRSEP '/'
|
||||
#define WINCDECL
|
||||
#endif // _WIN32
|
||||
|
||||
#define MAX_OPTIONS 100
|
||||
#define MAX_CONF_FILE_LINE_SIZE (8 * 1024)
|
||||
|
||||
static int exit_flag;
|
||||
static char server_name[40]; // Set by init_server_name()
|
||||
static char config_file[PATH_MAX]; // Set by process_command_line_arguments()
|
||||
static struct mg_context *ctx; // Set by start_mongoose()
|
||||
|
||||
#if !defined(CONFIG_FILE)
|
||||
#define CONFIG_FILE "mongoose.conf"
|
||||
#endif /* !CONFIG_FILE */
|
||||
|
||||
static void WINCDECL signal_handler(int sig_num) {
|
||||
exit_flag = sig_num;
|
||||
}
|
||||
|
||||
static void die(const char *fmt, ...) {
|
||||
va_list ap;
|
||||
char msg[200];
|
||||
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(msg, sizeof(msg), fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
#if defined(_WIN32)
|
||||
MessageBox(NULL, msg, "Error", MB_OK);
|
||||
#else
|
||||
fprintf(stderr, "%s\n", msg);
|
||||
#endif
|
||||
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
static void show_usage_and_exit(void) {
|
||||
const char **names;
|
||||
int i;
|
||||
|
||||
fprintf(stderr, "Mongoose version %s (c) Sergey Lyubka, built on %s\n",
|
||||
mg_version(), __DATE__);
|
||||
fprintf(stderr, "Usage:\n");
|
||||
fprintf(stderr, " mongoose -A <htpasswd_file> <realm> <user> <passwd>\n");
|
||||
fprintf(stderr, " mongoose [config_file]\n");
|
||||
fprintf(stderr, " mongoose [-option value ...]\n");
|
||||
fprintf(stderr, "\nOPTIONS:\n");
|
||||
|
||||
names = mg_get_valid_option_names();
|
||||
for (i = 0; names[i] != NULL; i += 2) {
|
||||
fprintf(stderr, " -%s %s\n",
|
||||
names[i], names[i + 1] == NULL ? "<empty>" : names[i + 1]);
|
||||
}
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
#if defined(_WIN32) || defined(USE_COCOA)
|
||||
static const char *config_file_top_comment =
|
||||
"# Mongoose web server configuration file.\n"
|
||||
"# For detailed description of every option, visit\n"
|
||||
"# https://github.com/valenok/mongoose/blob/master/UserManual.md\n"
|
||||
"# Lines starting with '#' and empty lines are ignored.\n"
|
||||
"# To make a change, remove leading '#', modify option's value,\n"
|
||||
"# save this file and then restart Mongoose.\n\n";
|
||||
|
||||
static const char *get_url_to_first_open_port(const struct mg_context *ctx) {
|
||||
static char url[100];
|
||||
const char *open_ports = mg_get_option(ctx, "listening_ports");
|
||||
int a, b, c, d, port, n;
|
||||
|
||||
if (sscanf(open_ports, "%d.%d.%d.%d:%d%n", &a, &b, &c, &d, &port, &n) == 5) {
|
||||
snprintf(url, sizeof(url), "%s://%d.%d.%d.%d:%d",
|
||||
open_ports[n] == 's' ? "https" : "http", a, b, c, d, port);
|
||||
} else if (sscanf(open_ports, "%d%n", &port, &n) == 1) {
|
||||
snprintf(url, sizeof(url), "%s://localhost:%d",
|
||||
open_ports[n] == 's' ? "https" : "http", port);
|
||||
} else {
|
||||
snprintf(url, sizeof(url), "%s", "http://localhost:8080");
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
static void create_config_file(const char *path) {
|
||||
const char **names, *value;
|
||||
FILE *fp;
|
||||
int i;
|
||||
|
||||
// Create config file if it is not present yet
|
||||
if ((fp = fopen(path, "r")) != NULL) {
|
||||
fclose(fp);
|
||||
} else if ((fp = fopen(path, "a+")) != NULL) {
|
||||
fprintf(fp, "%s", config_file_top_comment);
|
||||
names = mg_get_valid_option_names();
|
||||
for (i = 0; names[i * 2] != NULL; i++) {
|
||||
value = mg_get_option(ctx, names[i * 2]);
|
||||
fprintf(fp, "# %s %s\n", names[i * 2], value ? value : "<value>");
|
||||
}
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void verify_document_root(const char *root) {
|
||||
const char *p, *path;
|
||||
char buf[PATH_MAX];
|
||||
struct stat st;
|
||||
|
||||
path = root;
|
||||
if ((p = strchr(root, ',')) != NULL && (size_t) (p - root) < sizeof(buf)) {
|
||||
memcpy(buf, root, p - root);
|
||||
buf[p - root] = '\0';
|
||||
path = buf;
|
||||
}
|
||||
|
||||
if (stat(path, &st) != 0 || !S_ISDIR(st.st_mode)) {
|
||||
die("Invalid root directory: [%s]: %s", root, strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
static char *sdup(const char *str) {
|
||||
char *p;
|
||||
if ((p = (char *) malloc(strlen(str) + 1)) != NULL) {
|
||||
strcpy(p, str);
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
static void set_option(char **options, const char *name, const char *value) {
|
||||
int i;
|
||||
|
||||
if (!strcmp(name, "document_root") || !(strcmp(name, "r"))) {
|
||||
verify_document_root(value);
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_OPTIONS - 3; i++) {
|
||||
if (options[i] == NULL) {
|
||||
options[i] = sdup(name);
|
||||
options[i + 1] = sdup(value);
|
||||
options[i + 2] = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i == MAX_OPTIONS - 3) {
|
||||
die("%s", "Too many options specified");
|
||||
}
|
||||
}
|
||||
|
||||
static void process_command_line_arguments(char *argv[], char **options) {
|
||||
char line[MAX_CONF_FILE_LINE_SIZE], opt[sizeof(line)], val[sizeof(line)], *p;
|
||||
FILE *fp = NULL;
|
||||
size_t i, cmd_line_opts_start = 1, line_no = 0;
|
||||
|
||||
options[0] = NULL;
|
||||
|
||||
// Should we use a config file ?
|
||||
if (argv[1] != NULL && argv[1][0] != '-') {
|
||||
snprintf(config_file, sizeof(config_file), "%s", argv[1]);
|
||||
cmd_line_opts_start = 2;
|
||||
} else if ((p = strrchr(argv[0], DIRSEP)) == NULL) {
|
||||
// No command line flags specified. Look where binary lives
|
||||
snprintf(config_file, sizeof(config_file), "%s", CONFIG_FILE);
|
||||
} else {
|
||||
snprintf(config_file, sizeof(config_file), "%.*s%c%s",
|
||||
(int) (p - argv[0]), argv[0], DIRSEP, CONFIG_FILE);
|
||||
}
|
||||
|
||||
fp = fopen(config_file, "r");
|
||||
|
||||
// If config file was set in command line and open failed, die
|
||||
if (cmd_line_opts_start == 2 && fp == NULL) {
|
||||
die("Cannot open config file %s: %s", config_file, strerror(errno));
|
||||
}
|
||||
|
||||
// Load config file settings first
|
||||
if (fp != NULL) {
|
||||
fprintf(stderr, "Loading config file %s\n", config_file);
|
||||
|
||||
// Loop over the lines in config file
|
||||
while (fgets(line, sizeof(line), fp) != NULL) {
|
||||
line_no++;
|
||||
|
||||
// Ignore empty lines and comments
|
||||
for (i = 0; isspace(* (unsigned char *) &line[i]); ) i++;
|
||||
if (line[i] == '#' || line[i] == '\0') {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (sscanf(line, "%s %[^\r\n#]", opt, val) != 2) {
|
||||
printf("%s: line %d is invalid, ignoring it:\n %s",
|
||||
config_file, (int) line_no, line);
|
||||
} else {
|
||||
set_option(options, opt, val);
|
||||
}
|
||||
}
|
||||
|
||||
(void) fclose(fp);
|
||||
}
|
||||
|
||||
// If we're under MacOS and started by launchd, then the second
|
||||
// argument is process serial number, -psn_.....
|
||||
// In this case, don't process arguments at all.
|
||||
if (argv[1] == NULL || memcmp(argv[1], "-psn_", 5) != 0) {
|
||||
// Handle command line flags.
|
||||
// They override config file and default settings.
|
||||
for (i = cmd_line_opts_start; argv[i] != NULL; i += 2) {
|
||||
if (argv[i][0] != '-' || argv[i + 1] == NULL) {
|
||||
show_usage_and_exit();
|
||||
}
|
||||
set_option(options, &argv[i][1], argv[i + 1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void init_server_name(void) {
|
||||
snprintf(server_name, sizeof(server_name), "Mongoose web server v. %s",
|
||||
mg_version());
|
||||
}
|
||||
|
||||
static int log_message(const struct mg_connection *conn, const char *message) {
|
||||
(void) conn;
|
||||
printf("%s\n", message);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void start_mongoose(int argc, char *argv[]) {
|
||||
struct mg_callbacks callbacks;
|
||||
char *options[MAX_OPTIONS];
|
||||
int i;
|
||||
|
||||
// Edit passwords file if -A option is specified
|
||||
if (argc > 1 && !strcmp(argv[1], "-A")) {
|
||||
if (argc != 6) {
|
||||
show_usage_and_exit();
|
||||
}
|
||||
exit(mg_modify_passwords_file(argv[2], argv[3], argv[4], argv[5]) ?
|
||||
EXIT_SUCCESS : EXIT_FAILURE);
|
||||
}
|
||||
|
||||
// Show usage if -h or --help options are specified
|
||||
if (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))) {
|
||||
show_usage_and_exit();
|
||||
}
|
||||
|
||||
/* Update config based on command line arguments */
|
||||
process_command_line_arguments(argv, options);
|
||||
|
||||
/* Setup signal handler: quit on Ctrl-C */
|
||||
signal(SIGTERM, signal_handler);
|
||||
signal(SIGINT, signal_handler);
|
||||
|
||||
/* Start Mongoose */
|
||||
memset(&callbacks, 0, sizeof(callbacks));
|
||||
callbacks.log_message = &log_message;
|
||||
ctx = mg_start(&callbacks, NULL, (const char **) options);
|
||||
for (i = 0; options[i] != NULL; i++) {
|
||||
free(options[i]);
|
||||
}
|
||||
|
||||
if (ctx == NULL) {
|
||||
die("%s", "Failed to start Mongoose.");
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
enum {
|
||||
ID_ICON = 100, ID_QUIT, ID_SETTINGS, ID_SEPARATOR, ID_INSTALL_SERVICE,
|
||||
ID_REMOVE_SERVICE, ID_STATIC, ID_GROUP, ID_SAVE, ID_RESET_DEFAULTS,
|
||||
ID_STATUS, ID_CONNECT,
|
||||
|
||||
// All dynamically created text boxes for options have IDs starting from
|
||||
// ID_CONTROLS, incremented by one.
|
||||
ID_CONTROLS = 200,
|
||||
|
||||
// Text boxes for files have "..." buttons to open file browser. These
|
||||
// buttons have IDs that are ID_FILE_BUTTONS_DELTA higher than associated
|
||||
// text box ID.
|
||||
ID_FILE_BUTTONS_DELTA = 1000
|
||||
};
|
||||
static HICON hIcon;
|
||||
static SERVICE_STATUS ss;
|
||||
static SERVICE_STATUS_HANDLE hStatus;
|
||||
static const char *service_magic_argument = "--";
|
||||
static NOTIFYICONDATA TrayIcon;
|
||||
|
||||
static void WINAPI ControlHandler(DWORD code) {
|
||||
if (code == SERVICE_CONTROL_STOP || code == SERVICE_CONTROL_SHUTDOWN) {
|
||||
ss.dwWin32ExitCode = 0;
|
||||
ss.dwCurrentState = SERVICE_STOPPED;
|
||||
}
|
||||
SetServiceStatus(hStatus, &ss);
|
||||
}
|
||||
|
||||
static void WINAPI ServiceMain(void) {
|
||||
ss.dwServiceType = SERVICE_WIN32;
|
||||
ss.dwCurrentState = SERVICE_RUNNING;
|
||||
ss.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
|
||||
|
||||
hStatus = RegisterServiceCtrlHandler(server_name, ControlHandler);
|
||||
SetServiceStatus(hStatus, &ss);
|
||||
|
||||
while (ss.dwCurrentState == SERVICE_RUNNING) {
|
||||
Sleep(1000);
|
||||
}
|
||||
mg_stop(ctx);
|
||||
|
||||
ss.dwCurrentState = SERVICE_STOPPED;
|
||||
ss.dwWin32ExitCode = (DWORD) -1;
|
||||
SetServiceStatus(hStatus, &ss);
|
||||
}
|
||||
|
||||
|
||||
static void show_error(void) {
|
||||
char buf[256];
|
||||
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL, GetLastError(),
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
buf, sizeof(buf), NULL);
|
||||
MessageBox(NULL, buf, "Error", MB_OK);
|
||||
}
|
||||
|
||||
static void *align(void *ptr, DWORD alig) {
|
||||
ULONG ul = (ULONG) ptr;
|
||||
ul += alig;
|
||||
ul &= ~alig;
|
||||
return ((void *) ul);
|
||||
}
|
||||
|
||||
static int is_boolean_option(const char *option_name) {
|
||||
return !strcmp(option_name, "enable_directory_listing") ||
|
||||
!strcmp(option_name, "enable_keep_alive");
|
||||
}
|
||||
|
||||
static int is_filename_option(const char *option_name) {
|
||||
return !strcmp(option_name, "cgi_interpreter") ||
|
||||
!strcmp(option_name, "global_auth_file") ||
|
||||
!strcmp(option_name, "put_delete_auth_file") ||
|
||||
!strcmp(option_name, "access_log_file") ||
|
||||
!strcmp(option_name, "error_log_file") ||
|
||||
!strcmp(option_name, "ssl_certificate");
|
||||
}
|
||||
|
||||
static int is_directory_option(const char *option_name) {
|
||||
return !strcmp(option_name, "document_root");
|
||||
}
|
||||
|
||||
static int is_numeric_options(const char *option_name) {
|
||||
return !strcmp(option_name, "num_threads");
|
||||
}
|
||||
|
||||
static void save_config(HWND hDlg, FILE *fp) {
|
||||
char value[2000];
|
||||
const char **options, *name, *default_value;
|
||||
int i, id;
|
||||
|
||||
fprintf(fp, "%s", config_file_top_comment);
|
||||
options = mg_get_valid_option_names();
|
||||
for (i = 0; options[i * 2] != NULL; i++) {
|
||||
name = options[i * 2];
|
||||
id = ID_CONTROLS + i;
|
||||
if (is_boolean_option(name)) {
|
||||
snprintf(value, sizeof(value), "%s",
|
||||
IsDlgButtonChecked(hDlg, id) ? "yes" : "no");
|
||||
} else {
|
||||
GetDlgItemText(hDlg, id, value, sizeof(value));
|
||||
}
|
||||
default_value = options[i * 2 + 1] == NULL ? "" : options[i * 2 + 1];
|
||||
// If value is the same as default, skip it
|
||||
if (strcmp(value, default_value) != 0) {
|
||||
fprintf(fp, "%s %s\n", name, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lP) {
|
||||
FILE *fp;
|
||||
int i;
|
||||
const char *name, *value, **options = mg_get_valid_option_names();
|
||||
|
||||
switch (msg) {
|
||||
case WM_CLOSE:
|
||||
DestroyWindow(hDlg);
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam)) {
|
||||
case ID_SAVE:
|
||||
EnableWindow(GetDlgItem(hDlg, ID_SAVE), FALSE);
|
||||
if ((fp = fopen(config_file, "w+")) != NULL) {
|
||||
save_config(hDlg, fp);
|
||||
fclose(fp);
|
||||
mg_stop(ctx);
|
||||
start_mongoose(__argc, __argv);
|
||||
}
|
||||
EnableWindow(GetDlgItem(hDlg, ID_SAVE), TRUE);
|
||||
break;
|
||||
case ID_RESET_DEFAULTS:
|
||||
for (i = 0; options[i * 2] != NULL; i++) {
|
||||
name = options[i * 2];
|
||||
value = options[i * 2 + 1] == NULL ? "" : options[i * 2 + 1];
|
||||
if (is_boolean_option(name)) {
|
||||
CheckDlgButton(hDlg, ID_CONTROLS + i, !strcmp(value, "yes") ?
|
||||
BST_CHECKED : BST_UNCHECKED);
|
||||
} else {
|
||||
SetWindowText(GetDlgItem(hDlg, ID_CONTROLS + i), value);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; options[i * 2] != NULL; i++) {
|
||||
name = options[i * 2];
|
||||
if ((is_filename_option(name) || is_directory_option(name)) &&
|
||||
LOWORD(wParam) == ID_CONTROLS + i + ID_FILE_BUTTONS_DELTA) {
|
||||
OPENFILENAME of;
|
||||
BROWSEINFO bi;
|
||||
char path[PATH_MAX] = "";
|
||||
|
||||
memset(&of, 0, sizeof(of));
|
||||
of.lStructSize = sizeof(of);
|
||||
of.hwndOwner = (HWND) hDlg;
|
||||
of.lpstrFile = path;
|
||||
of.nMaxFile = sizeof(path);
|
||||
of.lpstrInitialDir = mg_get_option(ctx, "document_root");
|
||||
of.Flags = OFN_CREATEPROMPT | OFN_NOCHANGEDIR;
|
||||
|
||||
memset(&bi, 0, sizeof(bi));
|
||||
bi.hwndOwner = (HWND) hDlg;
|
||||
bi.lpszTitle = "Choose WWW root directory:";
|
||||
bi.ulFlags = BIF_RETURNONLYFSDIRS;
|
||||
|
||||
if (is_directory_option(name)) {
|
||||
SHGetPathFromIDList(SHBrowseForFolder(&bi), path);
|
||||
} else {
|
||||
GetOpenFileName(&of);
|
||||
}
|
||||
|
||||
if (path[0] != '\0') {
|
||||
SetWindowText(GetDlgItem(hDlg, ID_CONTROLS + i), path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case WM_INITDIALOG:
|
||||
SendMessage(hDlg, WM_SETICON,(WPARAM) ICON_SMALL, (LPARAM) hIcon);
|
||||
SendMessage(hDlg, WM_SETICON,(WPARAM) ICON_BIG, (LPARAM) hIcon);
|
||||
SetWindowText(hDlg, "Mongoose settings");
|
||||
SetFocus(GetDlgItem(hDlg, ID_SAVE));
|
||||
for (i = 0; options[i * 2] != NULL; i++) {
|
||||
name = options[i * 2];
|
||||
value = mg_get_option(ctx, name);
|
||||
if (is_boolean_option(name)) {
|
||||
CheckDlgButton(hDlg, ID_CONTROLS + i, !strcmp(value, "yes") ?
|
||||
BST_CHECKED : BST_UNCHECKED);
|
||||
} else {
|
||||
SetDlgItemText(hDlg, ID_CONTROLS + i, value == NULL ? "" : value);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void add_control(unsigned char **mem, DLGTEMPLATE *dia, WORD type,
|
||||
DWORD id, DWORD style, WORD x, WORD y,
|
||||
WORD cx, WORD cy, const char *caption) {
|
||||
DLGITEMTEMPLATE *tp;
|
||||
LPWORD p;
|
||||
|
||||
dia->cdit++;
|
||||
|
||||
*mem = align(*mem, 3);
|
||||
tp = (DLGITEMTEMPLATE *) *mem;
|
||||
|
||||
tp->id = (WORD)id;
|
||||
tp->style = style;
|
||||
tp->dwExtendedStyle = 0;
|
||||
tp->x = x;
|
||||
tp->y = y;
|
||||
tp->cx = cx;
|
||||
tp->cy = cy;
|
||||
|
||||
p = align(*mem + sizeof(*tp), 1);
|
||||
*p++ = 0xffff;
|
||||
*p++ = type;
|
||||
|
||||
while (*caption != '\0') {
|
||||
*p++ = (WCHAR) *caption++;
|
||||
}
|
||||
*p++ = 0;
|
||||
p = align(p, 1);
|
||||
|
||||
*p++ = 0;
|
||||
*mem = (unsigned char *) p;
|
||||
}
|
||||
|
||||
static void show_settings_dialog() {
|
||||
#define HEIGHT 15
|
||||
#define WIDTH 400
|
||||
#define LABEL_WIDTH 80
|
||||
|
||||
unsigned char mem[4096], *p;
|
||||
const char **option_names, *long_option_name;
|
||||
DWORD style;
|
||||
DLGTEMPLATE *dia = (DLGTEMPLATE *) mem;
|
||||
WORD i, cl, x, y, width, nelems = 0;
|
||||
static int guard;
|
||||
|
||||
static struct {
|
||||
DLGTEMPLATE template; // 18 bytes
|
||||
WORD menu, class;
|
||||
wchar_t caption[1];
|
||||
WORD fontsiz;
|
||||
wchar_t fontface[7];
|
||||
} dialog_header = {{WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE |
|
||||
DS_SETFONT | WS_DLGFRAME, WS_EX_TOOLWINDOW, 0, 200, 200, WIDTH, 0},
|
||||
0, 0, L"", 8, L"Tahoma"};
|
||||
|
||||
if (guard == 0) {
|
||||
guard++;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
(void) memset(mem, 0, sizeof(mem));
|
||||
(void) memcpy(mem, &dialog_header, sizeof(dialog_header));
|
||||
p = mem + sizeof(dialog_header);
|
||||
|
||||
option_names = mg_get_valid_option_names();
|
||||
for (i = 0; option_names[i * 2] != NULL; i++) {
|
||||
long_option_name = option_names[i * 2];
|
||||
style = WS_CHILD | WS_VISIBLE | WS_TABSTOP;
|
||||
x = 10 + (WIDTH / 2) * (nelems % 2);
|
||||
y = (nelems/2 + 1) * HEIGHT + 5;
|
||||
width = WIDTH / 2 - 20 - LABEL_WIDTH;
|
||||
if (is_numeric_options(long_option_name)) {
|
||||
style |= ES_NUMBER;
|
||||
cl = 0x81;
|
||||
style |= WS_BORDER | ES_AUTOHSCROLL;
|
||||
} else if (is_boolean_option(long_option_name)) {
|
||||
cl = 0x80;
|
||||
style |= BS_AUTOCHECKBOX;
|
||||
} else if (is_filename_option(long_option_name) ||
|
||||
is_directory_option(long_option_name)) {
|
||||
style |= WS_BORDER | ES_AUTOHSCROLL;
|
||||
width -= 20;
|
||||
cl = 0x81;
|
||||
add_control(&p, dia, 0x80,
|
||||
ID_CONTROLS + i + ID_FILE_BUTTONS_DELTA,
|
||||
WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
|
||||
(WORD) (x + width + LABEL_WIDTH + 5),
|
||||
y, 15, 12, "...");
|
||||
} else {
|
||||
cl = 0x81;
|
||||
style |= WS_BORDER | ES_AUTOHSCROLL;
|
||||
}
|
||||
add_control(&p, dia, 0x82, ID_STATIC, WS_VISIBLE | WS_CHILD,
|
||||
x, y, LABEL_WIDTH, HEIGHT, long_option_name);
|
||||
add_control(&p, dia, cl, ID_CONTROLS + i, style,
|
||||
(WORD) (x + LABEL_WIDTH), y, width, 12, "");
|
||||
nelems++;
|
||||
}
|
||||
|
||||
y = (WORD) (((nelems + 1) / 2 + 1) * HEIGHT + 5);
|
||||
add_control(&p, dia, 0x80, ID_GROUP, WS_CHILD | WS_VISIBLE |
|
||||
BS_GROUPBOX, 5, 5, WIDTH - 10, y, " Settings ");
|
||||
y += 10;
|
||||
add_control(&p, dia, 0x80, ID_SAVE,
|
||||
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,
|
||||
WIDTH - 70, y, 65, 12, "Save Settings");
|
||||
add_control(&p, dia, 0x80, ID_RESET_DEFAULTS,
|
||||
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,
|
||||
WIDTH - 140, y, 65, 12, "Reset to defaults");
|
||||
add_control(&p, dia, 0x82, ID_STATIC,
|
||||
WS_CHILD | WS_VISIBLE | WS_DISABLED,
|
||||
5, y, 180, 12, server_name);
|
||||
|
||||
dia->cy = ((nelems + 1) / 2 + 1) * HEIGHT + 30;
|
||||
DialogBoxIndirectParam(NULL, dia, NULL, DlgProc, (LPARAM) NULL);
|
||||
guard--;
|
||||
}
|
||||
|
||||
static int manage_service(int action) {
|
||||
static const char *service_name = "Mongoose";
|
||||
SC_HANDLE hSCM = NULL, hService = NULL;
|
||||
SERVICE_DESCRIPTION descr = {server_name};
|
||||
char path[PATH_MAX + 20]; // Path to executable plus magic argument
|
||||
int success = 1;
|
||||
|
||||
if ((hSCM = OpenSCManager(NULL, NULL, action == ID_INSTALL_SERVICE ?
|
||||
GENERIC_WRITE : GENERIC_READ)) == NULL) {
|
||||
success = 0;
|
||||
show_error();
|
||||
} else if (action == ID_INSTALL_SERVICE) {
|
||||
GetModuleFileName(NULL, path, sizeof(path));
|
||||
strncat(path, " ", sizeof(path));
|
||||
strncat(path, service_magic_argument, sizeof(path));
|
||||
hService = CreateService(hSCM, service_name, service_name,
|
||||
SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
|
||||
SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
|
||||
path, NULL, NULL, NULL, NULL, NULL);
|
||||
if (hService) {
|
||||
ChangeServiceConfig2(hService, SERVICE_CONFIG_DESCRIPTION, &descr);
|
||||
} else {
|
||||
show_error();
|
||||
}
|
||||
} else if (action == ID_REMOVE_SERVICE) {
|
||||
if ((hService = OpenService(hSCM, service_name, DELETE)) == NULL ||
|
||||
!DeleteService(hService)) {
|
||||
show_error();
|
||||
}
|
||||
} else if ((hService = OpenService(hSCM, service_name,
|
||||
SERVICE_QUERY_STATUS)) == NULL) {
|
||||
success = 0;
|
||||
}
|
||||
|
||||
CloseServiceHandle(hService);
|
||||
CloseServiceHandle(hSCM);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam,
|
||||
LPARAM lParam) {
|
||||
static SERVICE_TABLE_ENTRY service_table[] = {
|
||||
{server_name, (LPSERVICE_MAIN_FUNCTION) ServiceMain},
|
||||
{NULL, NULL}
|
||||
};
|
||||
int service_installed;
|
||||
char buf[200], *service_argv[] = {__argv[0], NULL};
|
||||
POINT pt;
|
||||
HMENU hMenu;
|
||||
static UINT s_uTaskbarRestart; // for taskbar creation
|
||||
|
||||
switch (msg) {
|
||||
case WM_CREATE:
|
||||
if (__argv[1] != NULL &&
|
||||
!strcmp(__argv[1], service_magic_argument)) {
|
||||
start_mongoose(1, service_argv);
|
||||
StartServiceCtrlDispatcher(service_table);
|
||||
exit(EXIT_SUCCESS);
|
||||
} else {
|
||||
start_mongoose(__argc, __argv);
|
||||
s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
|
||||
}
|
||||
break;
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam)) {
|
||||
case ID_QUIT:
|
||||
mg_stop(ctx);
|
||||
Shell_NotifyIcon(NIM_DELETE, &TrayIcon);
|
||||
PostQuitMessage(0);
|
||||
return 0;
|
||||
case ID_SETTINGS:
|
||||
show_settings_dialog();
|
||||
break;
|
||||
case ID_INSTALL_SERVICE:
|
||||
case ID_REMOVE_SERVICE:
|
||||
manage_service(LOWORD(wParam));
|
||||
break;
|
||||
case ID_CONNECT:
|
||||
printf("[%s]\n", get_url_to_first_open_port(ctx));
|
||||
ShellExecute(NULL, "open", get_url_to_first_open_port(ctx),
|
||||
NULL, NULL, SW_SHOW);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WM_USER:
|
||||
switch (lParam) {
|
||||
case WM_RBUTTONUP:
|
||||
case WM_LBUTTONUP:
|
||||
case WM_LBUTTONDBLCLK:
|
||||
hMenu = CreatePopupMenu();
|
||||
AppendMenu(hMenu, MF_STRING | MF_GRAYED, ID_SEPARATOR, server_name);
|
||||
AppendMenu(hMenu, MF_SEPARATOR, ID_SEPARATOR, "");
|
||||
service_installed = manage_service(0);
|
||||
snprintf(buf, sizeof(buf), "NT service: %s installed",
|
||||
service_installed ? "" : "not");
|
||||
AppendMenu(hMenu, MF_STRING | MF_GRAYED, ID_SEPARATOR, buf);
|
||||
AppendMenu(hMenu, MF_STRING | (service_installed ? MF_GRAYED : 0),
|
||||
ID_INSTALL_SERVICE, "Install service");
|
||||
AppendMenu(hMenu, MF_STRING | (!service_installed ? MF_GRAYED : 0),
|
||||
ID_REMOVE_SERVICE, "Deinstall service");
|
||||
AppendMenu(hMenu, MF_SEPARATOR, ID_SEPARATOR, "");
|
||||
AppendMenu(hMenu, MF_STRING, ID_CONNECT, "Start browser");
|
||||
AppendMenu(hMenu, MF_STRING, ID_SETTINGS, "Edit Settings");
|
||||
AppendMenu(hMenu, MF_SEPARATOR, ID_SEPARATOR, "");
|
||||
AppendMenu(hMenu, MF_STRING, ID_QUIT, "Exit");
|
||||
GetCursorPos(&pt);
|
||||
SetForegroundWindow(hWnd);
|
||||
TrackPopupMenu(hMenu, 0, pt.x, pt.y, 0, hWnd, NULL);
|
||||
PostMessage(hWnd, WM_NULL, 0, 0);
|
||||
DestroyMenu(hMenu);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WM_CLOSE:
|
||||
mg_stop(ctx);
|
||||
Shell_NotifyIcon(NIM_DELETE, &TrayIcon);
|
||||
PostQuitMessage(0);
|
||||
return 0; // We've just sent our own quit message, with proper hwnd.
|
||||
default:
|
||||
if (msg==s_uTaskbarRestart)
|
||||
Shell_NotifyIcon(NIM_ADD, &TrayIcon);
|
||||
}
|
||||
|
||||
return DefWindowProc(hWnd, msg, wParam, lParam);
|
||||
}
|
||||
|
||||
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR cmdline, int show) {
|
||||
WNDCLASS cls;
|
||||
HWND hWnd;
|
||||
MSG msg;
|
||||
|
||||
init_server_name();
|
||||
memset(&cls, 0, sizeof(cls));
|
||||
cls.lpfnWndProc = (WNDPROC) WindowProc;
|
||||
cls.hIcon = LoadIcon(NULL, IDI_APPLICATION);
|
||||
cls.lpszClassName = server_name;
|
||||
|
||||
RegisterClass(&cls);
|
||||
hWnd = CreateWindow(cls.lpszClassName, server_name, WS_OVERLAPPEDWINDOW,
|
||||
0, 0, 0, 0, NULL, NULL, NULL, NULL);
|
||||
ShowWindow(hWnd, SW_HIDE);
|
||||
|
||||
TrayIcon.cbSize = sizeof(TrayIcon);
|
||||
TrayIcon.uID = ID_ICON;
|
||||
TrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
|
||||
TrayIcon.hIcon = hIcon = LoadImage(GetModuleHandle(NULL),
|
||||
MAKEINTRESOURCE(ID_ICON),
|
||||
IMAGE_ICON, 16, 16, 0);
|
||||
TrayIcon.hWnd = hWnd;
|
||||
snprintf(TrayIcon.szTip, sizeof(TrayIcon.szTip), "%s", server_name);
|
||||
TrayIcon.uCallbackMessage = WM_USER;
|
||||
Shell_NotifyIcon(NIM_ADD, &TrayIcon);
|
||||
|
||||
while (GetMessage(&msg, hWnd, 0, 0) > 0) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
|
||||
// Return the WM_QUIT value.
|
||||
return msg.wParam;
|
||||
}
|
||||
#elif defined(USE_COCOA)
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface Mongoose : NSObject<NSApplicationDelegate>
|
||||
- (void) openBrowser;
|
||||
- (void) shutDown;
|
||||
@end
|
||||
|
||||
@implementation Mongoose
|
||||
- (void) openBrowser {
|
||||
[[NSWorkspace sharedWorkspace]
|
||||
openURL:[NSURL URLWithString:
|
||||
[NSString stringWithUTF8String:get_url_to_first_open_port(ctx)]]];
|
||||
}
|
||||
- (void) editConfig {
|
||||
create_config_file(config_file);
|
||||
[[NSWorkspace sharedWorkspace]
|
||||
openFile:[NSString stringWithUTF8String:config_file]
|
||||
withApplication:@"TextEdit"];
|
||||
}
|
||||
- (void)shutDown{
|
||||
[NSApp terminate:nil];
|
||||
}
|
||||
@end
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
init_server_name();
|
||||
start_mongoose(argc, argv);
|
||||
|
||||
[NSAutoreleasePool new];
|
||||
[NSApplication sharedApplication];
|
||||
|
||||
// Add delegate to process menu item actions
|
||||
Mongoose *myDelegate = [[Mongoose alloc] autorelease];
|
||||
[NSApp setDelegate: myDelegate];
|
||||
|
||||
// Run this app as agent
|
||||
ProcessSerialNumber psn = { 0, kCurrentProcess };
|
||||
TransformProcessType(&psn, kProcessTransformToBackgroundApplication);
|
||||
SetFrontProcess(&psn);
|
||||
|
||||
// Add status bar menu
|
||||
id menu = [[NSMenu new] autorelease];
|
||||
|
||||
// Add version menu item
|
||||
[menu addItem:[[[NSMenuItem alloc]
|
||||
//initWithTitle:[NSString stringWithFormat:@"%s", server_name]
|
||||
initWithTitle:[NSString stringWithUTF8String:server_name]
|
||||
action:@selector(noexist) keyEquivalent:@""] autorelease]];
|
||||
|
||||
// Add configuration menu item
|
||||
[menu addItem:[[[NSMenuItem alloc]
|
||||
initWithTitle:@"Edit configuration"
|
||||
action:@selector(editConfig) keyEquivalent:@""] autorelease]];
|
||||
|
||||
// Add connect menu item
|
||||
[menu addItem:[[[NSMenuItem alloc]
|
||||
initWithTitle:@"Open web root in a browser"
|
||||
action:@selector(openBrowser) keyEquivalent:@""] autorelease]];
|
||||
|
||||
// Separator
|
||||
[menu addItem:[NSMenuItem separatorItem]];
|
||||
|
||||
// Add quit menu item
|
||||
[menu addItem:[[[NSMenuItem alloc]
|
||||
initWithTitle:@"Quit"
|
||||
action:@selector(shutDown) keyEquivalent:@"q"] autorelease]];
|
||||
|
||||
// Attach menu to the status bar
|
||||
id item = [[[NSStatusBar systemStatusBar]
|
||||
statusItemWithLength:NSVariableStatusItemLength] retain];
|
||||
[item setHighlightMode:YES];
|
||||
[item setImage:[NSImage imageNamed:@"mongoose_22x22.png"]];
|
||||
[item setMenu:menu];
|
||||
|
||||
// Run the app
|
||||
[NSApp activateIgnoringOtherApps:YES];
|
||||
[NSApp run];
|
||||
|
||||
mg_stop(ctx);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
#else
|
||||
int main(int argc, char *argv[]) {
|
||||
init_server_name();
|
||||
start_mongoose(argc, argv);
|
||||
printf("%s started on port(s) %s with web root [%s]\n",
|
||||
server_name, mg_get_option(ctx, "listening_ports"),
|
||||
mg_get_option(ctx, "document_root"));
|
||||
while (exit_flag == 0) {
|
||||
sleep(1);
|
||||
}
|
||||
printf("Exiting on signal %d, waiting for all threads to finish...",
|
||||
exit_flag);
|
||||
fflush(stdout);
|
||||
mg_stop(ctx);
|
||||
printf("%s", " done.\n");
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
#endif /* _WIN32 */
|
||||
|
|
@ -1,184 +0,0 @@
|
|||
.\" Process this file with
|
||||
.\" groff -man -Tascii mongoose.1
|
||||
.\" $Id: mongoose.1,v 1.12 2008/11/29 15:32:42 drozd Exp $
|
||||
.Dd Sep 23, 2012
|
||||
.Dt mongoose 1
|
||||
.Sh NAME
|
||||
.Nm mongoose
|
||||
.Nd lightweight web server
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Ar config_file
|
||||
.Op Ar OPTIONS
|
||||
.Nm
|
||||
.Fl A Ar htpasswd_file domain_name user_name password
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
is small, fast and easy to use web server with CGI, SSL, MD5 authorization,
|
||||
and basic SSI support.
|
||||
.Pp
|
||||
.Nm
|
||||
does not detach from terminal, and uses current working directory
|
||||
as the web root, unless
|
||||
.Fl r
|
||||
option is specified.
|
||||
It is possible to specify multiple ports to listen on. For example, to make
|
||||
mongoose listen on HTTP port 80 and HTTPS port 443, one should start it as:
|
||||
.Nm
|
||||
.Fl s Ar cert.pem Fl p Ar 80,443s
|
||||
.Pp
|
||||
Unlike other web servers,
|
||||
.Nm
|
||||
does not require CGI scripts be put in a special directory. CGI scripts can
|
||||
be anywhere. CGI (and SSI) files are recognized by the file name pattern.
|
||||
.Nm
|
||||
uses shell-like glob patterns with the following syntax:
|
||||
.Bl -tag -compact -width indent
|
||||
.It **
|
||||
Matches everything
|
||||
.It *
|
||||
Matches everything but slash character, '/'
|
||||
.It ?
|
||||
Matches any character
|
||||
.It $
|
||||
Matches the end of the string
|
||||
.It |
|
||||
Matches if pattern on the left side or the right side matches. Pattern on the
|
||||
left side is matched first
|
||||
.El
|
||||
All other characters in the pattern match themselves.
|
||||
.Pp
|
||||
If no arguments are given,
|
||||
.Nm
|
||||
searches for a configuration file called "mongoose.conf" in the same directory
|
||||
where mongoose binary is located. Alternatively, a file name could be
|
||||
specified in the command line. Format of the configuration file is the same
|
||||
as for the command line options except that each option must be specified
|
||||
on a separate line, leading dashes for option names must be omitted.
|
||||
Lines beginning with '#' and empty lines are ignored.
|
||||
.Pp
|
||||
.Sh OPTIONS
|
||||
.Bl -tag -width indent
|
||||
.It Fl A Ar htpasswd_file domain_name user_name password
|
||||
Add/edit user's password in the passwords file. Deleting users can be done
|
||||
with any text editor. Functionality is similar to Apache's
|
||||
.Ic htdigest
|
||||
utility.
|
||||
.It Fl C Ar cgi_pattern
|
||||
All files that fully match cgi_pattern are treated as CGI.
|
||||
Default pattern allows CGI files be
|
||||
anywhere. To restrict CGIs to certain directory, use e.g. "-C /cgi-bin/**.cgi".
|
||||
Default: "**.cgi$|**.pl$|**.php$"
|
||||
.It Fl E Ar cgi_environment
|
||||
Extra environment variables to be passed to the CGI script in addition to
|
||||
standard ones. The list must be comma-separated list of X=Y pairs, like this:
|
||||
"VARIABLE1=VALUE1,VARIABLE2=VALUE2". Default: ""
|
||||
.It Fl G Ar put_delete_passwords_file
|
||||
PUT and DELETE passwords file. This must be specified if PUT or
|
||||
DELETE methods are used. Default: ""
|
||||
.It Fl I Ar cgi_interpreter
|
||||
Use
|
||||
.Ar cgi_interpreter
|
||||
as a CGI interpreter for all CGI scripts regardless script extension.
|
||||
Mongoose decides which interpreter to use by looking at
|
||||
the first line of a CGI script. Default: "".
|
||||
.It Fl P Ar protect_uri
|
||||
Comma separated list of URI=PATH pairs, specifying that given URIs
|
||||
must be protected with respected password files. Default: ""
|
||||
.It Fl R Ar authentication_domain
|
||||
Authorization realm. Default: "mydomain.com"
|
||||
.It Fl S Ar ssi_pattern
|
||||
All files that fully match ssi_pattern are treated as SSI.
|
||||
Unknown SSI directives are silently ignored. Currently, two SSI directives
|
||||
are supported, "include" and "exec". Default: "**.shtml$|**.shtm$"
|
||||
.It Fl T Ar throttle
|
||||
Limit download speed for clients.
|
||||
.Ar throttle
|
||||
is a comma-separated list of key=value pairs, where
|
||||
key could be a '*' character (limit for all connections), a subnet in form
|
||||
x.x.x.x/mask (limit for a given subnet, for example 10.0.0.0/8), or an
|
||||
URI prefix pattern (limit for the set of URIs, for example /foo/**). The value
|
||||
is a floating-point number of bytes per second, optionally followed by a
|
||||
`k' or `m' character, meaning kilobytes and megabytes respectively. A limit
|
||||
of 0 means unlimited rate. The last matching rule wins. For example,
|
||||
"*=1k,10.0.0.0/8" means limit everybody to 1 kilobyte per second, but give
|
||||
people from 10/8 subnet unlimited speed. Default: ""
|
||||
.It Fl a Ar access_log_file
|
||||
Access log file. Default: "", no logging is done.
|
||||
.It Fl d Ar enable_directory_listing
|
||||
Enable/disable directory listing. Default: "yes"
|
||||
.It Fl e Ar error_log_file
|
||||
Error log file. Default: "", no errors are logged.
|
||||
.It Fl g Ar global_passwords_file
|
||||
Location of a global passwords file. If set, per-directory .htpasswd files are
|
||||
ignored, and all requests must be authorised against that file. Default: ""
|
||||
.It Fl i Ar index_files
|
||||
Comma-separated list of files to be treated as directory index files.
|
||||
Default: "index.html,index.htm,index.cgi"
|
||||
.It Fl l Ar access_control_list
|
||||
Specify access control list (ACL). ACL is a comma separated list
|
||||
of IP subnets, each subnet is prepended by '-' or '+' sign. Plus means allow,
|
||||
minus means deny. If subnet mask is
|
||||
omitted, like "-1.2.3.4", then it means single IP address. Mask may vary
|
||||
from 0 to 32 inclusive. On each request, full list is traversed, and
|
||||
last match wins. Default setting is to allow all. For example, to allow only
|
||||
192.168/16 subnet to connect, run "mongoose -0.0.0.0/0,+192.168/16".
|
||||
Default: ""
|
||||
.It Fl m Ar extra_mime_types
|
||||
Extra mime types to recognize, in form
|
||||
"extension1=type1,extension2=type2,...". Extension must include dot.
|
||||
Example: "mongoose -m .cpp=plain/text,.java=plain/text". Default: ""
|
||||
.It Fl p Ar listening_ports
|
||||
Comma-separated list of ports to listen on. If the port is SSL, a letter 's'
|
||||
must be appeneded, for example, "-p 80,443s" will open port 80 and port 443,
|
||||
and connections on port 443 will be SSL-ed. It is possible to specify an
|
||||
IP address to bind to. In this case, an IP address and a colon must be
|
||||
prepended to the port number. For example, to bind to a loopback interface
|
||||
on port 80 and to all interfaces on HTTPS port 443, use
|
||||
"mongoose -p 127.0.0.1:80,443s". Default: "8080"
|
||||
.It Fl r Ar document_root
|
||||
Location of the WWW root directory. Default: "."
|
||||
.It Fl s Ar ssl_certificate
|
||||
Location of SSL certificate file. Default: ""
|
||||
.It Fl t Ar num_threads
|
||||
Number of worker threads to start. Default: "10"
|
||||
.It Fl u Ar run_as_user
|
||||
Switch to given user's credentials after startup. Default: ""
|
||||
.It Fl w Ar url_rewrite_patterns
|
||||
Comma-separated list of URL rewrites in the form of
|
||||
"pattern=substitution,..." If the "pattern" matches some prefix
|
||||
of the requested URL, then matched prefix gets substituted with "substitution".
|
||||
For example, "-w /config=/etc,**.doc|**.rtf=/path/to/cgi-bin/handle_doc.cgi"
|
||||
will serve all URLs that start with "/config" from the "/etc" directory, and
|
||||
call handle_doc.cgi script for .doc and .rtf file requests. If some pattern
|
||||
matches, no further matching/substitution is performed
|
||||
(first matching pattern wins). Use full paths in substitutions. Default: ""
|
||||
.It Fl x Ar hide_files_patterns
|
||||
A prefix pattern for the files to hide. Files that match the pattern will not
|
||||
show up in directory listing and return 404 Not Found if requested. Default: ""
|
||||
.El
|
||||
.Pp
|
||||
.Sh EMBEDDING
|
||||
.Nm
|
||||
was designed to be embeddable into C/C++ applications. Since the
|
||||
source code is contained in single C file, it is fairly easy to embed it
|
||||
and follow the updates. Please refer to http://code.google.com/p/mongoose
|
||||
for details.
|
||||
.Pp
|
||||
.Sh EXAMPLES
|
||||
.Bl -tag -width indent
|
||||
.It Nm Fl r Ar /var/www Fl s Ar /etc/cert.pem Fl p Ar 8080,8043s
|
||||
Start serving files from /var/www. Listen on port 8080 for HTTP, and 8043
|
||||
for HTTPS connections. Use /etc/cert.pem as SSL certificate file.
|
||||
.It Nm Fl l Ar -0.0.0.0/0,+10.0.0.0/8,+1.2.3.4
|
||||
Deny connections from everywhere, allow only IP address 1.2.3.4 and
|
||||
all IP addresses from 10.0.0.0/8 subnet to connect.
|
||||
.It Nm Fl w Ar **=/usr/bin/script.cgi
|
||||
Invoke /usr/bin/script.cgi for every incoming request, regardless of the URL.
|
||||
.El
|
||||
.Pp
|
||||
.Sh COPYRIGHT
|
||||
.Nm
|
||||
is licensed under the terms of the MIT license.
|
||||
.Sh AUTHOR
|
||||
.An Sergey Lyubka Aq valenok@gmail.com .
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,384 +0,0 @@
|
|||
// Copyright (c) 2004-2012 Sergey Lyubka
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#ifndef MONGOOSE_HEADER_INCLUDED
|
||||
#define MONGOOSE_HEADER_INCLUDED
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif // __cplusplus
|
||||
|
||||
struct mg_context; // Handle for the HTTP service itself
|
||||
struct mg_connection; // Handle for the individual connection
|
||||
|
||||
|
||||
// This structure contains information about the HTTP request.
|
||||
struct mg_request_info {
|
||||
const char *request_method; // "GET", "POST", etc
|
||||
const char *uri; // URL-decoded URI
|
||||
const char *http_version; // E.g. "1.0", "1.1"
|
||||
const char *query_string; // URL part after '?', not including '?', or NULL
|
||||
const char *remote_user; // Authenticated user, or NULL if no auth used
|
||||
long remote_ip; // Client's IP address
|
||||
int remote_port; // Client's port
|
||||
int is_ssl; // 1 if SSL-ed, 0 if not
|
||||
void *user_data; // User data pointer passed to mg_start()
|
||||
|
||||
int num_headers; // Number of HTTP headers
|
||||
struct mg_header {
|
||||
const char *name; // HTTP header name
|
||||
const char *value; // HTTP header value
|
||||
} http_headers[64]; // Maximum 64 headers
|
||||
};
|
||||
|
||||
|
||||
// This structure needs to be passed to mg_start(), to let mongoose know
|
||||
// which callbacks to invoke. For detailed description, see
|
||||
// https://github.com/valenok/mongoose/blob/master/UserManual.md
|
||||
struct mg_callbacks {
|
||||
// Called when mongoose has received new HTTP request.
|
||||
// If callback returns non-zero,
|
||||
// callback must process the request by sending valid HTTP headers and body,
|
||||
// and mongoose will not do any further processing.
|
||||
// If callback returns 0, mongoose processes the request itself. In this case,
|
||||
// callback must not send any data to the client.
|
||||
int (*begin_request)(struct mg_connection *);
|
||||
|
||||
// Called when mongoose has finished processing request.
|
||||
void (*end_request)(const struct mg_connection *, int reply_status_code);
|
||||
|
||||
// Called when mongoose is about to log a message. If callback returns
|
||||
// non-zero, mongoose does not log anything.
|
||||
int (*log_message)(const struct mg_connection *, const char *message);
|
||||
|
||||
// Called when mongoose initializes SSL library.
|
||||
int (*init_ssl)(void *ssl_context, void *user_data);
|
||||
|
||||
// Called when websocket request is received, before websocket handshake.
|
||||
// If callback returns 0, mongoose proceeds with handshake, otherwise
|
||||
// cinnection is closed immediately.
|
||||
int (*websocket_connect)(const struct mg_connection *);
|
||||
|
||||
// Called when websocket handshake is successfully completed, and
|
||||
// connection is ready for data exchange.
|
||||
void (*websocket_ready)(struct mg_connection *);
|
||||
|
||||
// Called when data frame has been received from the client.
|
||||
// Parameters:
|
||||
// bits: first byte of the websocket frame, see websocket RFC at
|
||||
// http://tools.ietf.org/html/rfc6455, section 5.2
|
||||
// data, data_len: payload, with mask (if any) already applied.
|
||||
// Return value:
|
||||
// non-0: keep this websocket connection opened.
|
||||
// 0: close this websocket connection.
|
||||
int (*websocket_data)(struct mg_connection *, int bits,
|
||||
char *data, size_t data_len);
|
||||
|
||||
// Called when mongoose tries to open a file. Used to intercept file open
|
||||
// calls, and serve file data from memory instead.
|
||||
// Parameters:
|
||||
// path: Full path to the file to open.
|
||||
// data_len: Placeholder for the file size, if file is served from memory.
|
||||
// Return value:
|
||||
// NULL: do not serve file from memory, proceed with normal file open.
|
||||
// non-NULL: pointer to the file contents in memory. data_len must be
|
||||
// initilized with the size of the memory block.
|
||||
const char * (*open_file)(const struct mg_connection *,
|
||||
const char *path, size_t *data_len);
|
||||
|
||||
// Called when mongoose is about to serve Lua server page (.lp file), if
|
||||
// Lua support is enabled.
|
||||
// Parameters:
|
||||
// lua_context: "lua_State *" pointer.
|
||||
void (*init_lua)(struct mg_connection *, void *lua_context);
|
||||
|
||||
// Called when mongoose has uploaded a file to a temporary directory as a
|
||||
// result of mg_upload() call.
|
||||
// Parameters:
|
||||
// file_file: full path name to the uploaded file.
|
||||
void (*upload)(struct mg_connection *, const char *file_name);
|
||||
|
||||
// Called when mongoose is about to send HTTP error to the client.
|
||||
// Implementing this callback allows to create custom error pages.
|
||||
// Parameters:
|
||||
// status: HTTP error status code.
|
||||
int (*http_error)(struct mg_connection *, int status);
|
||||
};
|
||||
|
||||
// Start web server.
|
||||
//
|
||||
// Parameters:
|
||||
// callbacks: mg_callbacks structure with user-defined callbacks.
|
||||
// options: NULL terminated list of option_name, option_value pairs that
|
||||
// specify Mongoose configuration parameters.
|
||||
//
|
||||
// Side-effects: on UNIX, ignores SIGCHLD and SIGPIPE signals. If custom
|
||||
// processing is required for these, signal handlers must be set up
|
||||
// after calling mg_start().
|
||||
//
|
||||
//
|
||||
// Example:
|
||||
// const char *options[] = {
|
||||
// "document_root", "/var/www",
|
||||
// "listening_ports", "80,443s",
|
||||
// NULL
|
||||
// };
|
||||
// struct mg_context *ctx = mg_start(&my_func, NULL, options);
|
||||
//
|
||||
// Refer to https://github.com/valenok/mongoose/blob/master/UserManual.md
|
||||
// for the list of valid option and their possible values.
|
||||
//
|
||||
// Return:
|
||||
// web server context, or NULL on error.
|
||||
struct mg_context *mg_start(const struct mg_callbacks *callbacks,
|
||||
void *user_data,
|
||||
const char **configuration_options);
|
||||
|
||||
|
||||
// Stop the web server.
|
||||
//
|
||||
// Must be called last, when an application wants to stop the web server and
|
||||
// release all associated resources. This function blocks until all Mongoose
|
||||
// threads are stopped. Context pointer becomes invalid.
|
||||
void mg_stop(struct mg_context *);
|
||||
|
||||
|
||||
// Get the value of particular configuration parameter.
|
||||
// The value returned is read-only. Mongoose does not allow changing
|
||||
// configuration at run time.
|
||||
// If given parameter name is not valid, NULL is returned. For valid
|
||||
// names, return value is guaranteed to be non-NULL. If parameter is not
|
||||
// set, zero-length string is returned.
|
||||
const char *mg_get_option(const struct mg_context *ctx, const char *name);
|
||||
|
||||
|
||||
// Return array of strings that represent valid configuration options.
|
||||
// For each option, a short name, long name, and default value is returned.
|
||||
// Array is NULL terminated.
|
||||
const char **mg_get_valid_option_names(void);
|
||||
|
||||
|
||||
// Add, edit or delete the entry in the passwords file.
|
||||
//
|
||||
// This function allows an application to manipulate .htpasswd files on the
|
||||
// fly by adding, deleting and changing user records. This is one of the
|
||||
// several ways of implementing authentication on the server side. For another,
|
||||
// cookie-based way please refer to the examples/chat.c in the source tree.
|
||||
//
|
||||
// If password is not NULL, entry is added (or modified if already exists).
|
||||
// If password is NULL, entry is deleted.
|
||||
//
|
||||
// Return:
|
||||
// 1 on success, 0 on error.
|
||||
int mg_modify_passwords_file(const char *passwords_file_name,
|
||||
const char *domain,
|
||||
const char *user,
|
||||
const char *password);
|
||||
|
||||
|
||||
// Return information associated with the request.
|
||||
struct mg_request_info *mg_get_request_info(struct mg_connection *);
|
||||
|
||||
|
||||
// Send data to the client.
|
||||
// Return:
|
||||
// 0 when the connection has been closed
|
||||
// -1 on error
|
||||
// >0 number of bytes written on success
|
||||
int mg_write(struct mg_connection *, const void *buf, size_t len);
|
||||
|
||||
|
||||
// Send data to a websocket client wrapped in a websocket frame.
|
||||
// It is unsafe to read/write to this connection from another thread.
|
||||
// This function is available when mongoose is compiled with -DUSE_WEBSOCKET
|
||||
//
|
||||
// Return:
|
||||
// 0 when the connection has been closed
|
||||
// -1 on error
|
||||
// >0 number of bytes written on success
|
||||
int mg_websocket_write(struct mg_connection* conn, int opcode,
|
||||
const char *data, size_t data_len);
|
||||
|
||||
// Opcodes, from http://tools.ietf.org/html/rfc6455
|
||||
enum {
|
||||
WEBSOCKET_OPCODE_CONTINUATION = 0x0,
|
||||
WEBSOCKET_OPCODE_TEXT = 0x1,
|
||||
WEBSOCKET_OPCODE_BINARY = 0x2,
|
||||
WEBSOCKET_OPCODE_CONNECTION_CLOSE = 0x8,
|
||||
WEBSOCKET_OPCODE_PING = 0x9,
|
||||
WEBSOCKET_OPCODE_PONG = 0xa
|
||||
};
|
||||
|
||||
|
||||
// Macros for enabling compiler-specific checks for printf-like arguments.
|
||||
#undef PRINTF_FORMAT_STRING
|
||||
#if defined(_MSC_VER) && _MSC_VER >= 1400
|
||||
#include <sal.h>
|
||||
#if defined(_MSC_VER) && _MSC_VER > 1400
|
||||
#define PRINTF_FORMAT_STRING(s) _Printf_format_string_ s
|
||||
#else
|
||||
#define PRINTF_FORMAT_STRING(s) __format_string s
|
||||
#endif
|
||||
#else
|
||||
#define PRINTF_FORMAT_STRING(s) s
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define PRINTF_ARGS(x, y) __attribute__((format(printf, x, y)))
|
||||
#else
|
||||
#define PRINTF_ARGS(x, y)
|
||||
#endif
|
||||
|
||||
// Send data to the client using printf() semantics.
|
||||
//
|
||||
// Works exactly like mg_write(), but allows to do message formatting.
|
||||
int mg_printf(struct mg_connection *,
|
||||
PRINTF_FORMAT_STRING(const char *fmt), ...) PRINTF_ARGS(2, 3);
|
||||
|
||||
|
||||
// Send contents of the entire file together with HTTP headers.
|
||||
void mg_send_file(struct mg_connection *conn, const char *path);
|
||||
|
||||
|
||||
// Read data from the remote end, return number of bytes read.
|
||||
// Return:
|
||||
// 0 connection has been closed by peer. No more data could be read.
|
||||
// < 0 read error. No more data could be read from the connection.
|
||||
// > 0 number of bytes read into the buffer.
|
||||
int mg_read(struct mg_connection *, void *buf, size_t len);
|
||||
|
||||
|
||||
// Get the value of particular HTTP header.
|
||||
//
|
||||
// This is a helper function. It traverses request_info->http_headers array,
|
||||
// and if the header is present in the array, returns its value. If it is
|
||||
// not present, NULL is returned.
|
||||
const char *mg_get_header(const struct mg_connection *, const char *name);
|
||||
|
||||
|
||||
// Get a value of particular form variable.
|
||||
//
|
||||
// Parameters:
|
||||
// data: pointer to form-uri-encoded buffer. This could be either POST data,
|
||||
// or request_info.query_string.
|
||||
// data_len: length of the encoded data.
|
||||
// var_name: variable name to decode from the buffer
|
||||
// dst: destination buffer for the decoded variable
|
||||
// dst_len: length of the destination buffer
|
||||
//
|
||||
// Return:
|
||||
// On success, length of the decoded variable.
|
||||
// On error:
|
||||
// -1 (variable not found).
|
||||
// -2 (destination buffer is NULL, zero length or too small to hold the
|
||||
// decoded variable).
|
||||
//
|
||||
// Destination buffer is guaranteed to be '\0' - terminated if it is not
|
||||
// NULL or zero length.
|
||||
int mg_get_var(const char *data, size_t data_len,
|
||||
const char *var_name, char *dst, size_t dst_len);
|
||||
|
||||
// Fetch value of certain cookie variable into the destination buffer.
|
||||
//
|
||||
// Destination buffer is guaranteed to be '\0' - terminated. In case of
|
||||
// failure, dst[0] == '\0'. Note that RFC allows many occurrences of the same
|
||||
// parameter. This function returns only first occurrence.
|
||||
//
|
||||
// Return:
|
||||
// On success, value length.
|
||||
// On error:
|
||||
// -1 (either "Cookie:" header is not present at all or the requested
|
||||
// parameter is not found).
|
||||
// -2 (destination buffer is NULL, zero length or too small to hold the
|
||||
// value).
|
||||
int mg_get_cookie(const char *cookie, const char *var_name,
|
||||
char *buf, size_t buf_len);
|
||||
|
||||
|
||||
// Download data from the remote web server.
|
||||
// host: host name to connect to, e.g. "foo.com", or "10.12.40.1".
|
||||
// port: port number, e.g. 80.
|
||||
// use_ssl: wether to use SSL connection.
|
||||
// error_buffer, error_buffer_size: error message placeholder.
|
||||
// request_fmt,...: HTTP request.
|
||||
// Return:
|
||||
// On success, valid pointer to the new connection, suitable for mg_read().
|
||||
// On error, NULL. error_buffer contains error message.
|
||||
// Example:
|
||||
// char ebuf[100];
|
||||
// struct mg_connection *conn;
|
||||
// conn = mg_download("google.com", 80, 0, ebuf, sizeof(ebuf),
|
||||
// "%s", "GET / HTTP/1.0\r\nHost: google.com\r\n\r\n");
|
||||
struct mg_connection *mg_download(const char *host, int port, int use_ssl,
|
||||
char *error_buffer, size_t error_buffer_size,
|
||||
PRINTF_FORMAT_STRING(const char *request_fmt),
|
||||
...) PRINTF_ARGS(6, 7);
|
||||
|
||||
|
||||
// Close the connection opened by mg_download().
|
||||
void mg_close_connection(struct mg_connection *conn);
|
||||
|
||||
|
||||
// File upload functionality. Each uploaded file gets saved into a temporary
|
||||
// file and MG_UPLOAD event is sent.
|
||||
// Return number of uploaded files.
|
||||
int mg_upload(struct mg_connection *conn, const char *destination_dir);
|
||||
|
||||
|
||||
// Convenience function -- create detached thread.
|
||||
// Return: 0 on success, non-0 on error.
|
||||
typedef void * (*mg_thread_func_t)(void *);
|
||||
int mg_start_thread(mg_thread_func_t f, void *p);
|
||||
|
||||
|
||||
// Return builtin mime type for the given file name.
|
||||
// For unrecognized extensions, "text/plain" is returned.
|
||||
const char *mg_get_builtin_mime_type(const char *file_name);
|
||||
|
||||
|
||||
// Return Mongoose version.
|
||||
const char *mg_version(void);
|
||||
|
||||
// URL-decode input buffer into destination buffer.
|
||||
// 0-terminate the destination buffer.
|
||||
// form-url-encoded data differs from URI encoding in a way that it
|
||||
// uses '+' as character for space, see RFC 1866 section 8.2.1
|
||||
// http://ftp.ics.uci.edu/pub/ietf/html/rfc1866.txt
|
||||
// Return: length of the decoded data, or -1 if dst buffer is too small.
|
||||
int mg_url_decode(const char *src, int src_len, char *dst,
|
||||
int dst_len, int is_form_url_encoded);
|
||||
|
||||
// MD5 hash given strings.
|
||||
// Buffer 'buf' must be 33 bytes long. Varargs is a NULL terminated list of
|
||||
// ASCIIz strings. When function returns, buf will contain human-readable
|
||||
// MD5 hash. Example:
|
||||
// char buf[33];
|
||||
// mg_md5(buf, "aa", "bb", NULL);
|
||||
char *mg_md5(char buf[33], ...);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // MONGOOSE_HEADER_INCLUDED
|
||||
|
|
@ -8669,15 +8669,15 @@ extern "C" {
|
|||
_next->call(&_next->glClearNamedBufferDataEXT)(buffer, internalformat, format, type, data);
|
||||
}
|
||||
|
||||
REGAL_DECL void REGAL_CALL glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data)
|
||||
REGAL_DECL void REGAL_CALL glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data)
|
||||
{
|
||||
RegalContext *_context = REGAL_GET_CONTEXT();
|
||||
RegalAssert(Init::isInitialized());
|
||||
App("glClearNamedBufferSubDataEXT","(", buffer, ", ", toString(internalformat), ", ", toString(format), ", ", toString(type), ", ", offset, ", ", size, ", ", boost::print::optional(data,Logging::pointers), ")");
|
||||
App("glClearNamedBufferSubDataEXT","(", buffer, ", ", toString(internalformat), ", ", offset, ", ", size, ", ", toString(format), ", ", toString(type), ", ", boost::print::optional(data,Logging::pointers), ")");
|
||||
if (!_context) return;
|
||||
DispatchTableGL *_next = &_context->dispatcher.front();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, format, type, offset, size, data);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, offset, size, format, type, data);
|
||||
}
|
||||
|
||||
/* GL_ARB_clear_texture */
|
||||
|
|
|
|||
|
|
@ -1613,7 +1613,7 @@ namespace Dispatch
|
|||
void (REGAL_CALL *glClearBufferData)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data);
|
||||
void (REGAL_CALL *glClearBufferSubData)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data);
|
||||
void (REGAL_CALL *glClearNamedBufferDataEXT)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data);
|
||||
void (REGAL_CALL *glClearNamedBufferSubDataEXT)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data);
|
||||
void (REGAL_CALL *glClearNamedBufferSubDataEXT)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data);
|
||||
|
||||
// GL_ARB_clear_texture
|
||||
|
||||
|
|
|
|||
|
|
@ -13690,22 +13690,22 @@ static void REGAL_CALL code_glClearNamedBufferDataEXT(GLuint buffer, GLenum inte
|
|||
fprintf(_context->codeSource,"%s",_code.str().c_str());
|
||||
}
|
||||
|
||||
static void REGAL_CALL code_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data)
|
||||
static void REGAL_CALL code_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data)
|
||||
{
|
||||
RegalContext *_context = REGAL_GET_CONTEXT();
|
||||
RegalAssert(_context);
|
||||
DispatchTableGL *_next = _context->dispatcher.code.next();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, format, type, offset, size, data);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, offset, size, format, type, data);
|
||||
std::string indent((_context->depthBeginEnd + _context->depthPushAttrib + 1)*2,' ');
|
||||
string_list< ::std::string > _code;
|
||||
_code << indent << "glClearNamedBufferSubDataEXT(";
|
||||
_code << buffer;
|
||||
_code << ", "; _code << toString(internalformat);
|
||||
_code << ", "; _code << toString(format);
|
||||
_code << ", "; _code << toString(type);
|
||||
_code << ", "; _code << offset;
|
||||
_code << ", "; _code << size;
|
||||
_code << ", "; _code << toString(format);
|
||||
_code << ", "; _code << toString(type);
|
||||
_code << ", "; _code << data;
|
||||
_code << ");\n";
|
||||
if (_context->codeSource)
|
||||
|
|
|
|||
|
|
@ -6920,13 +6920,13 @@ static void REGAL_CALL debug_glClearNamedBufferDataEXT(GLuint buffer, GLenum int
|
|||
_next->call(&_next->glClearNamedBufferDataEXT)(buffer, internalformat, format, type, data);
|
||||
}
|
||||
|
||||
static void REGAL_CALL debug_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data)
|
||||
static void REGAL_CALL debug_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data)
|
||||
{
|
||||
RegalContext *_context = REGAL_GET_CONTEXT();
|
||||
RegalAssert(_context);
|
||||
DispatchTableGL *_next = _context->dispatcher.debug.next();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, format, type, offset, size, data);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, offset, size, format, type, data);
|
||||
}
|
||||
|
||||
// GL_ARB_clear_texture
|
||||
|
|
|
|||
|
|
@ -18838,7 +18838,7 @@ static void REGAL_CALL error_glClearNamedBufferDataEXT(GLuint buffer, GLenum int
|
|||
}
|
||||
}
|
||||
|
||||
static void REGAL_CALL error_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data)
|
||||
static void REGAL_CALL error_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data)
|
||||
{
|
||||
Internal("error_glClearNamedBufferSubDataEXT","()");
|
||||
RegalContext *_context = REGAL_GET_CONTEXT();
|
||||
|
|
@ -18849,7 +18849,7 @@ static void REGAL_CALL error_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum
|
|||
if (!_context->err.inBeginEnd)
|
||||
_error = _next->call(&_next->glGetError)();
|
||||
RegalAssert(_error==GL_NO_ERROR);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, format, type, offset, size, data);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, offset, size, format, type, data);
|
||||
if (!_context->err.inBeginEnd) {
|
||||
_error = _next->call(&_next->glGetError)();
|
||||
if (_error!=GL_NO_ERROR) {
|
||||
|
|
|
|||
|
|
@ -5402,11 +5402,11 @@ namespace Loader
|
|||
_driver.call(&_driver.glClearNamedBufferDataEXT)(buffer, internalformat, format, type, data);
|
||||
}
|
||||
|
||||
static void REGAL_CALL glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data)
|
||||
static void REGAL_CALL glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data)
|
||||
{
|
||||
DispatchTableGL &_driver = _getDispatchGL();
|
||||
_getProcAddress(reinterpret_cast<void (**)()>(&_driver.glClearNamedBufferSubDataEXT),reinterpret_cast<void (*)()>(glClearNamedBufferSubDataEXT),"glClearNamedBufferSubDataEXT");
|
||||
_driver.call(&_driver.glClearNamedBufferSubDataEXT)(buffer, internalformat, format, type, offset, size, data);
|
||||
_driver.call(&_driver.glClearNamedBufferSubDataEXT)(buffer, internalformat, offset, size, format, type, data);
|
||||
}
|
||||
|
||||
// GL_ARB_clear_texture
|
||||
|
|
|
|||
|
|
@ -7676,14 +7676,14 @@ static void REGAL_CALL log_glClearNamedBufferDataEXT(GLuint buffer, GLenum inter
|
|||
Driver("glClearNamedBufferDataEXT","(", buffer, ", ", toString(internalformat), ", ", toString(format), ", ", toString(type), ", ", boost::print::optional(data,Logging::pointers), ")");
|
||||
}
|
||||
|
||||
static void REGAL_CALL log_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data)
|
||||
static void REGAL_CALL log_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data)
|
||||
{
|
||||
RegalContext *_context = REGAL_GET_CONTEXT();
|
||||
RegalAssert(_context);
|
||||
DispatchTableGL *_next = _context->dispatcher.logging.next();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, format, type, offset, size, data);
|
||||
Driver("glClearNamedBufferSubDataEXT","(", buffer, ", ", toString(internalformat), ", ", toString(format), ", ", toString(type), ", ", offset, ", ", size, ", ", boost::print::optional(data,Logging::pointers), ")");
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, offset, size, format, type, data);
|
||||
Driver("glClearNamedBufferSubDataEXT","(", buffer, ", ", toString(internalformat), ", ", offset, ", ", size, ", ", toString(format), ", ", toString(type), ", ", boost::print::optional(data,Logging::pointers), ")");
|
||||
}
|
||||
|
||||
// GL_ARB_clear_texture
|
||||
|
|
|
|||
|
|
@ -5921,14 +5921,14 @@ namespace Missing
|
|||
Warning( "glClearNamedBufferDataEXT", " not available." );
|
||||
}
|
||||
|
||||
static void REGAL_CALL glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data)
|
||||
static void REGAL_CALL glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data)
|
||||
{
|
||||
UNUSED_PARAMETER(buffer);
|
||||
UNUSED_PARAMETER(internalformat);
|
||||
UNUSED_PARAMETER(format);
|
||||
UNUSED_PARAMETER(type);
|
||||
UNUSED_PARAMETER(offset);
|
||||
UNUSED_PARAMETER(size);
|
||||
UNUSED_PARAMETER(format);
|
||||
UNUSED_PARAMETER(type);
|
||||
UNUSED_PARAMETER(data);
|
||||
Warning( "glClearNamedBufferSubDataEXT", " not available." );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10886,7 +10886,7 @@ static void REGAL_CALL statistics_glClearNamedBufferDataEXT(GLuint buffer, GLenu
|
|||
_next->call(&_next->glClearNamedBufferDataEXT)(buffer, internalformat, format, type, data);
|
||||
}
|
||||
|
||||
static void REGAL_CALL statistics_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data)
|
||||
static void REGAL_CALL statistics_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data)
|
||||
{
|
||||
RegalContext *_context = REGAL_GET_CONTEXT();
|
||||
RegalAssert(_context);
|
||||
|
|
@ -10899,7 +10899,7 @@ static void REGAL_CALL statistics_glClearNamedBufferSubDataEXT(GLuint buffer, GL
|
|||
|
||||
DispatchTableGL *_next = _context->dispatcher.statistics.next();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, format, type, offset, size, data);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, offset, size, format, type, data);
|
||||
}
|
||||
|
||||
// GL_ARB_clear_texture
|
||||
|
|
|
|||
|
|
@ -892,7 +892,7 @@ namespace Trace
|
|||
void glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data);
|
||||
void glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data);
|
||||
void glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const GLvoid *data);
|
||||
void glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data);
|
||||
void glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data);
|
||||
|
||||
// GL_ARB_clear_texture
|
||||
|
||||
|
|
@ -2664,6 +2664,10 @@ namespace Trace
|
|||
void glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
void glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
|
||||
|
||||
// GL_NV_framebuffer_blit
|
||||
|
||||
void glBlitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
|
||||
// GL_NV_framebuffer_multisample_coverage
|
||||
|
||||
void glRenderbufferStorageMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
|
|
@ -11162,14 +11166,14 @@ static void REGAL_CALL trace_glClearNamedBufferDataEXT(GLuint buffer, GLenum int
|
|||
Trace::glClearNamedBufferDataEXT(buffer, internalformat, format, type, data);
|
||||
}
|
||||
|
||||
static void REGAL_CALL trace_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data)
|
||||
static void REGAL_CALL trace_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data)
|
||||
{
|
||||
Internal("trace_glClearNamedBufferSubDataEXT","()");
|
||||
Thread::ThreadLocal &_instance = Thread::ThreadLocal::instance();
|
||||
RegalAssert(_instance.currentContext);
|
||||
Push<DispatchTableGL *> _push(_instance.nextDispatchTable);
|
||||
_instance.nextDispatchTable = _instance.currentContext->dispatcher.trace.next();
|
||||
Trace::glClearNamedBufferSubDataEXT(buffer, internalformat, format, type, offset, size, data);
|
||||
Trace::glClearNamedBufferSubDataEXT(buffer, internalformat, offset, size, format, type, data);
|
||||
}
|
||||
|
||||
// GL_ARB_clear_texture
|
||||
|
|
@ -24545,6 +24549,18 @@ static void REGAL_CALL trace_glProgramNamedParameter4fvNV(GLuint id, GLsizei len
|
|||
Trace::glProgramNamedParameter4fvNV(id, len, name, v);
|
||||
}
|
||||
|
||||
// GL_NV_framebuffer_blit
|
||||
|
||||
static void REGAL_CALL trace_glBlitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
|
||||
{
|
||||
Internal("trace_glBlitFramebufferNV","()");
|
||||
Thread::ThreadLocal &_instance = Thread::ThreadLocal::instance();
|
||||
RegalAssert(_instance.currentContext);
|
||||
Push<DispatchTableGL *> _push(_instance.nextDispatchTable);
|
||||
_instance.nextDispatchTable = _instance.currentContext->dispatcher.trace.next();
|
||||
Trace::glBlitFramebufferNV(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
}
|
||||
|
||||
// GL_NV_framebuffer_multisample_coverage
|
||||
|
||||
static void REGAL_CALL trace_glRenderbufferStorageMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height)
|
||||
|
|
@ -36463,6 +36479,10 @@ void InitDispatchTableTrace(DispatchTableGL &tbl)
|
|||
tbl.glProgramNamedParameter4fNV = trace_glProgramNamedParameter4fNV;
|
||||
tbl.glProgramNamedParameter4fvNV = trace_glProgramNamedParameter4fvNV;
|
||||
|
||||
// GL_NV_framebuffer_blit
|
||||
|
||||
tbl.glBlitFramebufferNV = trace_glBlitFramebufferNV;
|
||||
|
||||
// GL_NV_framebuffer_multisample_coverage
|
||||
|
||||
tbl.glRenderbufferStorageMultisampleCoverageNV = trace_glRenderbufferStorageMultisampleCoverageNV;
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ using namespace std;
|
|||
#include <boost/print/print_string.hpp>
|
||||
using boost::print::print_string;
|
||||
|
||||
#include "mongoose.h"
|
||||
#include "civetweb.h"
|
||||
|
||||
REGAL_GLOBAL_END
|
||||
|
||||
|
|
@ -79,7 +79,7 @@ namespace Http
|
|||
int port = REGAL_HTTP_PORT; // HTTP listening port - 8080 by default
|
||||
|
||||
mg_callbacks callbacks; // Callbacks
|
||||
mg_context *ctx = NULL; // Mongoose context
|
||||
mg_context *ctx = NULL; // civetweb context
|
||||
|
||||
void Init()
|
||||
{
|
||||
|
|
@ -198,7 +198,7 @@ namespace Http
|
|||
html);
|
||||
|
||||
mg_write(conn,http.c_str(),http.length());
|
||||
return 1; // Mark as handled for Mongoose
|
||||
return 1; // Mark as handled for civetweb
|
||||
}
|
||||
|
||||
void Start()
|
||||
|
|
@ -246,7 +246,7 @@ namespace Http
|
|||
{
|
||||
HTrace("Closing HTTP connections.");
|
||||
|
||||
// Currently there is a problem with shutting down mongoose
|
||||
// Currently there is a problem with shutting down civetweb
|
||||
// on Windows - so just skip the cleanup for now.
|
||||
|
||||
#if !REGAL_SYS_WGL
|
||||
|
|
|
|||
|
|
@ -6118,12 +6118,12 @@ extern "C" {
|
|||
_next->call(&_next->glClearNamedBufferDataEXT)(buffer, internalformat, format, type, data);
|
||||
}
|
||||
|
||||
void REGAL_CALL plugin_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLintptr offset, GLsizeiptr size, const GLvoid *data)
|
||||
void REGAL_CALL plugin_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const GLvoid *data)
|
||||
{
|
||||
::REGAL_NAMESPACE_INTERNAL::Thread::ThreadLocal &_instance = ::REGAL_NAMESPACE_INTERNAL::Thread::ThreadLocal::instance();
|
||||
::REGAL_NAMESPACE_INTERNAL::DispatchTableGL *_next = _instance.nextDispatchTable;
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, format, type, offset, size, data);
|
||||
_next->call(&_next->glClearNamedBufferSubDataEXT)(buffer, internalformat, offset, size, format, type, data);
|
||||
}
|
||||
|
||||
/* GL_ARB_clear_texture */
|
||||
|
|
|
|||
Loading…
Reference in a new issue