* harbour/contrib/examples/uhttpd/uhttpd.prg
+ Added _HTTP_RESPONSE headers
* Renamed defineServerAdresses() function to defineServer()
as now define all _SERVER variables
* ParseRequest() now uses uhttpd_SplitUrl() to define URI parts
* Host now is defined according with RFC2616
* HRB session now is defined as UHTTPD-SESSION to avoid collision with
SESSION in cookies
! uhttpd_AddHeader() renamed to uhttpd_SetHeader() to be conformed to
RFC2616 that wants that a header variable is defined only once.
See cookie.prg changes.
Headers now are contained in a Hash instead of an array
* fixed as per above also uhttpd_GetHeader() / uhttpd_DelHeader()
* harbour/contrib/examples/uhttpd/session.prg
* uhttpd_AddHeader() -> uhttpd_SetHeader()
* harbour/contrib/examples/uhttpd/cgifunc.prg
* in function uhttpd_SplitUrl() added URI hash field
+ harbour/contrib/examples/uhttpd/cookie.prg
* To conform to RFC2616 now if Set-Cookie has more than one value than
is created a comma separated list of cookie-name=cookie-value
* uhttpd_AddHeader() -> uhttpd_SetHeader()
* harbour/contrib/examples/uhttpd/modules/info.prg
+ Added _HTTP_RESPONSE display
* harbour/contrib/examples/uhttpd/modules/cookie.prg
* harbour/contrib/examples/uhttpd/modules/showcounter.prg
* harbour/contrib/examples/uhttpd/modules/tableservletdb.prg
* uhttpd_AddHeader() -> uhttpd_SetHeader()
* harbour/contrib/examples/uhttpd/uhttpd.prg
+ added Application Root folder
Also as ini command and -a command line switch
* fixed starting path
! fixed CGI/HRB execution path
now uhttpd runs CGI and HRB pointing to document root
as execution path. Pay attention to update existing cgi and
hrb modules.
+ added console rows and cols to alter console display
either as ini command than as -cr and -cc command line switch
! fixed $(APP_DIR) and $(DOCROOT_DIR) macro substitution
now it is possible to run uhttpd executable from a different
folder specifying uhttpd.ini path, application root path and
document root path that may differ from default
* updated help screen
* harbour/contrib/examples/uhttpd/uhttpd.ini
+ added new commands
* harbour/contrib/examples/uhttpd/session.prg
* work in progress to fix error in session handling
* harbour/contrib/examples/uhttpd/modules/tableservletdb.prg
* updated path of test.dbf that now is relative to document root
and not to application path
* harbour/contrib/examples/uhttpd/uhttpd.prg
* error string formatting
using hb_GTInfo() functions. Tested only in windows.
* harbour/contrib/examples/uhttpd/session.prg
+ added retrying in case of error in writing / deleting session files.
* harbour/contrib/examples/uhttpd/cgifunc.prg
* changed FCreate() to hb_FCreate()
* harbour/contrib/examples/uhttpd/uhttpd.prg
+ added support for closing console using "X" system button
using hb_GTInfo() functions. Tested only in windows.
* formatting
* harbour/contrib/examples/uhttpd/uhttpdc.c
* added WM_CLOSE event in win_SysRefresh()
* harbour/contrib/examples/uhttpd/session.prg
* minor change
* harbour/contrib/examples/uhttpd/uhttpd.prg
+ added #define FIXED_THREADS that disable (temporarly) dynamic threads
support, until I will find a correct way to implement.
* changed default GT in Linux from GTXWC to GTTRM
+ added Actions and Handlers support
rewrote handlers part, now separated and similar to Apache
* changed internal ScripAlias Hash name from Aliases to ScriptAliases
+ added Alias support
+ added PATH_INFO and PATH_TRANSLATED support
this means that parts of urls longer than the real file url are passed to
file as parameters. Actually valid for any file.
* fixed CGIKill() to correct handle killing of not responding CGI apps
* formatting and minor changes
; NOTE: not tested under Linux, more tests to do
; TOFIX: in case of error of cgi executables error output is missing,
this I have to check better.
* harbour/contrib/examples/uhttpd/uhttpd.ini
* changed [ALIASES] section name to [SCRIPTALIASES]
+ added [ALIASES] correct section
* harbour/contrib/examples/uhttpd/session.prg
+ added retrying in case of error in reading session files.
to check it better
; NOTE: still work in progress.
Any comments and suggestions are welcome
* harbour/include/hbthread.h
* harbour/source/vm/thread.c
* emulate POSIX thread conditional variables in Windows builds.
It should fix some possible bad behavior in MS-Windows Harbour
MT programs.
* harbour/source/rtl/hbinet.c
! fixed typo in HB_INETDATAREADY() - the second parameter (timeout)
was ignored.
* harbour/contrib/examples/uhttpd/uhttpdc.c
* fixed typo in conditional iMsec usage.
* harbour/contrib/examples/uhttpd/uhttpd.prg
* set default timeout for socket operations to 3 sec.
* use timeout parameter in HB_INETDATAREADY() and
increased default timeout for accept to 250 millisecs.
Please correct this modification if you prefer different values.
* utils/hbmk2/hbmk2.prg
+ Normalizing paths of cfg files.
* CCPREFIX, CCPATH renamed to HB_CCPREFIX, HB_CCPATH
(seems these are Harbour specific settings)
* contrib/examples/uhttpd/home/testxmldb.html
* Added Safari as unsupported browser.
(BTW, what would it need to support Safari and Chrome, or
WebKit browsers in general?)
* harbour/contrib/examples/uhttpd/uhttpd.prg
- Commented hb_GCAll() in main loop, I got newly one GPF randomly.
In meanwhile I will do other tests.
! Reverted and corrected closing threads because with last changes
finished threads were not correctly released.
* harbour/source/common/hbgete.c
* added suport for BSD systems
* harbour/contrib/examples/uhttpd/uhttpd.prg
! fixed private declaration - after last modification they were not
declared for threads at all
! fixed close procedure, s_aRunningThreads and s_aServiceThreads
where not protected at all in the moment when these variables
variables where used inside aeval() and other threads were
resizing them removing their pointers. In short word it was
in practice impossible to cleanly close uhttpd server without
GPF, deadlock or other bad side effects. I changed this code so
these arrays are modified only by calling procedure.
I do not know why it was written in such way but I guess it
was workaround for xHarbour bugs. In xHarbour is race condition
inside some functions like ThreadJoin() (RTE if thread finished
just before ThreadJoin(<pThID>)). Harbour does not have such
problems so I simply cleaned this code making it much simpler.
* reactivated hb_gcAll( .T. ) in the main loop for tests.
I made some tests with linux and current uhttpd works perfectly
without any problems with and without hb_gcAll( .t. ).
I haven't noticed any problems. I used this scripts to make
tests:
#!/bin/sh
function GT_UHTTPD()
{
while curl http://127.0.0.1:8082/ > /dev/null
do
if ! curl http://127.0.0.1:8082/serverstatus > /dev/null
then
exit
fi
# disable it if you want to increase traffic
if ! curl http://127.0.0.1:8082/info > /dev/null
then
exit
fi
if [ -f stop ]
then
exit
fi
done
}
for i in `seq 10`
do
GT_UHTTPD &>/dev/null &
done
wait
on three CPU machine. Please make some test with other systems.
* contrib/examples/uhttpd/uhttpdgd.hbm
+ Added *nix GD lib name.
* contrib/hbwin/win_prt.c
! WINPORTWRITE() potential GPF if non char type is passed as 2nd arg.
* harbour/contrib/examples/uhttpd/uhttpd.prg
* Updated uHTTPD (Work in progress)
- Commented hb_GCAll() in main loop, I got one GPF randomly.
* Fixed an error on threads number calculation
* utils/hbmk2/hbmk2.prg
! Fixed -gh switch detection and workings.
(Francesco, pls check now allmod.hbm)
+ -gt switch can now be filtered. (-gtwin{win})
! -gui switch won't anymore add '-Wl,-mwindows' C compiler switch
on *nix systems. Someone pls confirm this is right.
* icc will use -vc postfixed .dlls. They seem to be binary
compatible, but I didn't test.
% Using __PLATFORM__UNIX macro where applicable.
! Ignoring -o Harbour option passed using '-prgflag:'
* INSTALL
+ Added some details.
* mpkg_win.bat
! Don't create install files if the make process returned
with error.
* source/lang/msg_tpl.c
! Removed ending ';'.
* source/vm/Makefile
+ Added icc to generate maindllh.lib.
* source/common/hbfsapi.c
! Removed obsolete 'extern hb_fhnd_ForceLink()'.
* config/rules.cf
* config/lib.cf
* config/bin.cf
% Compiling all .prg files with -n1 switch.
* contrib/examples/uhttpd/uhttpdc.c
* Cleaned Windows headers usage.
#define HB_OS_WIN_USED is safe to use on all platforms,
it just requests the Windows headers, and if compiled on
Windows, it will #include them.
* contrib/examples/uhttpd/uhttpd.prg
+ Automatically sets USE_HB_INET on non-Windows platforms.
- contrib/examples/uhttpd/uhttpd-inet.hbm
- contrib/examples/uhttpd/uhttpdgd-inet.hbm
- Removed files no longer necessary.
* contrib/examples/uhttpd/uhttpd.hbm
+ Added comment about -DUSE_HB_INET option.
% Removed -lhbct
* harbour/contrib/examples/uhttpd/uhttpd.prg
* Updated uHTTPD (Work in progress)
* Updated to work in Linux.
* Fixed PRIVATE use and threads as per Przemek suggestions
* Marked WIN_SYSREFRESH() with USE_WIN_ADDONS define
* Changed WIN_TIMEZONEBIAS() to hb_UTCoffset()
* Changed WIN_SETENV() to hb_SetEnv()
* Minor changes
* harbour/contrib/examples/uhttpd/uhttpdc.c
* Marked WIN_SYSREFRESH() as only windows function
- Deleted WIN_SETENV()
- Deleted WIN_TIMEZONEBIAS()
+ Added hb_UTCoffset()
* harbour/contrib/examples/uhttpd/socket.c
* Guarded for only windows build
* harbour/contrib/examples/uhttpd/session.prg
* Changed FileDate() to hb_FGetDateTime()
* harbour/contrib/examples/uhttpd/uhttpd.ini
* Minor fixes
* harbour/contrib/examples/uhttpd/modules/showcounter.prg
* harbour/contrib/examples/uhttpd/modules/tableservletdb.prg
* fixed Linux build
+ harbour/contrib/examples/uhttpd/uhttpd-inet.hbm
+ harbour/contrib/examples/uhttpd/uhttpdgd-inet.hbm
+ Added as temporary files to build uhttpd under Linux
(they haven't -gui flags that give error as per Przemek
note, instead add -gtxwc as standard gui)
; NOTE:
Przemek please check if hb_UTCOffSet() it is correct, then we have to move in
other place.
Tested all samples and they works.
Modules build need to be fixed (Viktor?) but hrb are built. Need to be copied
manually to ../home/cgi-bin
* include/hbextern.ch
+ Added HB_SETENV()
* utils/hbmk2/hbmk2.prg
* Minor cleanups.
* contrib/examples/uhttpd/uhttpd.hbm
- Removed -n. It's now automatic.
; TODO: Remove the rest.
* INSTALL
* doc/man/hbmk.1
+ config/win/icc.cf
* utils/hbmk2/hbmk2.prg
+ Added Intel(R) C++ compiler support for Windows.
+ Added initial support also in hbmk2.
; This compile is actively developed and its famous of
generating the fastest running code of all C compilers.
It also outputs an extremely detailed warning list.
And the best thing: It compiled Harbour without a single
hitch. hbtest is also running fine. hbmk2 is able to
create executables.
* harbour/contrib/examples/uhttpd/uhttpd.prg
* Updated uHTTPD (Work in progress)
! Fixing memory usage attempt.
Set PRIVATE vars to NIL when not more used and force
collect memory with hb_GCAll( .T. )
* Set Service Threads initial value to 0
+ Added support for directory index files
+ Added support for filters (WIP)
* Added creation of error.log file in case of error
* Minor changes
* harbour/contrib/examples/uhttpd/cgifunc.prg
* Fixed comment
* harbour/contrib/examples/uhttpd/uhttpd.ini
+ DirectoryIndex entry
; NOTE: Please check me for memory usage. I have added a comment
// FSG - memory check
to interested lines. But I'm not sure if this solves the
problem.
* utils/hbmk2/hbmk2.prg
+ Automatically switching to -hbcmp mode if /gh switch is used.
+ In -hbcmp mode it will pass /o option directly to Harbour.
- contrib/examples/uhttpd/modules/bldhrb.bat
+ contrib/examples/uhttpd/modules/allmod.hbm
+ Replaced batch file with hbmk2 make file. It will build
all .hrb files and place them to cgi-bin dir.
* source/rtl/Makefile
* include/hbextern.ch
+ source/rtl/hbstrfmt.c
+ Added HB_STRFORMAT() sprintf()-like formatting.
+ Added hb_StrFormat() C level function.
; Work of Mindaugas sent to the list, with some minor
cleanups applied. Please test on your platform/compiler.
* contrib/examples/uhttpd/uhttpd.prg
* contrib/examples/uhttpd/cgifunc.prg
* contrib/examples/uhttpd/session.prg
* contrib/examples/uhttpd/uhttpd.hbm
* xhb compatibility cleanups.
- xhb lib and header dependency removed.
* utils/hbmk2/hbmk2.prg
* Changed so that libs won't inherit their .hbm file paths.
+ Embedded .hbm files will inherit their parents dir.
- contrib/examples/uhttpd/hbmk.bat
+ contrib/examples/uhttpd/uhttpdgd.hbm
* contrib/examples/uhttpd/uhttpd.prg
* contrib/examples/uhttpd/readme.txt
* Added separate GD enabled .hbm file.
* Remaining hbmk.bat features moved to .prg code and into readme.txt.
* utils/hbmk2/hbmk2.prg
+ Added support for @ and .hbm parameters inside .hbm files.
Currently three levels deep nesting in allowed.
* contrib/xhb/Makefile
+ contrib/xhb/dbf2txt.c
+ Added DBF2TXT() function from xhb.
; TODO: RPC support and HB_SERVICE*() API ?
* INSTALL
* make_b32.bat
* doc/gmake.txt
* bin/postinst.bat
* bin/hb-mkdyn.bat
* make_gnu.bat
* contrib/hbfimage/readme.txt
* contrib/examples/uhttpd/modules/bldhrb.bat
* source/vm/Makefile
* source/rtl/console.c
* source/compiler/gencobj.c
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/examples/winapi.hbp
- config/win/bcc32.cf
+ config/win/bcc.cf
* Long time TODO done: Renamed bcc32 compiler name to bcc.
bcc32 is still accepted by make_gnu.bat, but will be
removed in the future, so it's recommended to update
your local settings to use:
set HB_COMPILER=bcc
- config/dos/bcc16.cf
- Deleted bcc16 compiler support. I didn't work since ages,
and Harbour doesn't support 16-bit compilers anyway.
* utils/Makefile
! Fixed broken GNU Make after recent directory rename.
* utils/hbmk/hbmk2.prg
* -q switch changed to -quiet to not collide with harbour option
of the same name.
+ Following C flags will automatically be inheried to
*nix/gcc|gpp compilers regardless of -bldf flag:
-mlp64, -mlp32, -m64, -m32, -fPIC, -fpic
+ Following C flags will be automatically processed and
relevent system libs added:
-DHB_PCRE_REGEX - pcre
-DHB_EXT_ZLIB - z
-DHAVE_GPM_H - gpm
! Stripping 'lib' prefix from lib names for gcc-family compilers.
! Stripping extension from lib names for gcc-family compilers.
; Please review.
* contrib/examples/uhttpd/hbmk.bat
* .lib extensions removed from HB_USER_LIBS.
- tests/hbmk_gnu.bat
- Removed.
* contrib/examples/uhttpd/hbmk.bat
* contrib/examples/dbu/hbmk.bat
* contrib/examples/rl/hbmk.bat
* Made them compatible with Win9x/NT systems again.
* source/lang/msg_tpl.c
+ Added NOTE about date format.
* source/lang/msgbe866.c
* source/lang/msgbewin.c
* source/lang/msgbg866.c
* source/lang/msgbgiso.c
* source/lang/msgbgmik.c
* source/lang/msgbgwin.c
* source/lang/msgit.c
* source/lang/msgnl.c
* source/lang/msgsl437.c
* source/lang/msgsl852.c
* source/lang/msgsliso.c
* source/lang/msgslwin.c
! Fixed date formats to only contain YYYY MM and DD.
Plus the format itself corrected in a few places.
* utils/hbmk/hbmk.prg
+ Added TODO
% Added ANNOUNCE HB_GTSYS / REQUEST HB_GT_STD_DEFAULT.
Since this tools doesn't need anything fullscreen, and
this way it's faster smaller, yet portable.
* ChangeLog
* Few old TODO/TOFIX statuses updated.
* bin/hbmk.bat
+ Added support for pure .c projects. (like pp)
* contrib/examples/pp/hbmk_b32.bat
* contrib/examples/pp/hbmk_vc.bat
* contrib/examples/guestbk/hbmk_b32.bat
* contrib/examples/guestbk/hbmk_vc.bat
* contrib/examples/pe/hbmk_b32.bat
* contrib/examples/pe/hbmk_vc.bat
* contrib/examples/hbsqlit2/tests/hbmk_b32.bat
* contrib/examples/hbsqlit2/tests/hbmk_vc.bat
* contrib/examples/uhttpd/hbmk_b32.bat
* contrib/examples/uhttpd/hbmk_vc.bat
* contrib/examples/dbu/hbmk_b32.bat
* contrib/examples/dbu/hbmk_vc.bat
* contrib/examples/terminal/hbmk_b32.bat
* contrib/examples/terminal/hbmk_b32_trm_appn.bat
* contrib/examples/terminal/hbmk_vc.bat
* contrib/examples/terminal/hbmk_vc_trm_appn.bat
* contrib/examples/hscript/hbmk_b32.bat
* contrib/examples/hscript/hbmk_vc.bat
* contrib/examples/rl/hbmk_b32.bat
* contrib/examples/rl/hbmk_vc.bat
* utils/hbdoc/hbmk_b32.bat
* utils/hbdoc/hbmk_vc.bat
* utils/hbmake/hbmk_b32.bat
* utils/hbmake/hbmk_vc.bat
% Much simplified batch files. Actually the content of vc
and b32 are fully identical, so you can easily create new
flavours for GCC and OpenWatcom by simply making a copy by
the name hbmk_gcc.bat or hbmk_ow.bat. Et voila.
; NOTE: As indicated, these won't work with Win9x anymore.
* contrib/examples/pp/hbppcore.c
+ Added <ctype.h> to make it compile with recent Harbour.
* harbour/contrib/examples/uhttpd/uhttpd.prg
* Updated uHTTPD (Work in progress)
+ Added support for Sessions
* Fixed ini file support
* harbour/contrib/examples/uhttpd/cgifunc.prg
* Fixed some functions
+ harbour/contrib/examples/uhttpd/session.prg
+ Session class
* harbour/contrib/examples/uhttpd/modules/info.prg
+ Added display of SESSION vars
+ Added a simple example of SESSIONS
* harbour/contrib/examples/uhttpd/hbmk_b32.bat
* harbour/contrib/examples/uhttpd/hbmk_b32.bat
+ Added new files
+ harbour/contrib/examples/uhttpd/sessions
+ Added folder used in samples
* utils/hbrun/hbrun.prg
+ If a .dbf file is passed on the command line, hbrun will
open it.
* contrib/examples/uhttpd/hbmk_vc.bat
* Updated.
* contrib/examples/uhttpd/hbmk_b32.bat
% Minor opt.
* harbour/contrib/examples/uhttpd/uhttpd.prg
* Updated uHTTPD (Work in progress)
+ Added HRB caching (set #define HRB_ACTIVATE_CACHE .T. to enable)
+ Added support for Cookies
* Formatted
! Renamed all public functions with uhttpd_ prefix (TOCHECK)
+ Added support for array content in POST variables
* Optimized some code
+ harbour/contrib/examples/uhttpd/cgifunc.prg
+ Some helper function moved here from uhttpd prg and added
some functions of mine
+ harbour/contrib/examples/uhttpd/cookie.prg
+ Cookie class
+ harbour/contrib/examples/uhttpd/modules/cookie.prg
+ cookie sample module
+ harbour/contrib/examples/uhttpd/home/postsample.html
+ POST example
* harbour/contrib/examples/uhttpd/uhttpd.ini
+ Added new script alias for cookie sample
* harbour/contrib/examples/uhttpd/hbmk_b32.bat
* harbour/contrib/examples/uhttpd/home/index.html
* harbour/contrib/examples/uhttpd/home/testxmldb.html
* harbour/contrib/examples/uhttpd/modules/bldhrb.bat
* harbour/contrib/examples/uhttpd/modules/info.prg
* harbour/contrib/examples/uhttpd/modules/showcounter.prg
* harbour/contrib/examples/uhttpd/modules/tableservletdb.prg
* Updated for new function prefix and some formatting
* source/rtl/gtwvt/gtwvt.c
! Fixed to #undef _WIN32_WINNT before setting it.
; TOFIX: hbwhat has this problem in almost all of its source
files.
* contrib/examples/uhttpd/modules/bldhrb.bat
* contrib/examples/uhttpd/modules/showcounter.prg
* contrib/examples/uhttpd/hbmk_b32.bat
* contrib/examples/uhttpd/hbmk_vc.bat
* Minor.
* contrib/examples/uhttpd/uhttpd.prg
! Fixed RTE when in socket.c mode.
* contrib/examples/uhttpd/socket.c
! Fixed leak. Thanks to Mindaugas.
; TOFIX: Ajax test (404 Not Found),
Counter (image not found),
cgi-bin (broken link),
XML database (empty boxes in Chrome, empty boxes
and error messagebox with IE8)
doesn't work here.
Shall I configure something?
* contrib/examples/uhttpd/uhttpd.prg
+ Added callstack in RTE message (ugly but useful).
! Fixed RTE when displaying server status.
(might have broken non-inet-mode)
* contrib/examples/uhttpd/hbmk_b32.bat
* contrib/examples/uhttpd/hbmk_vc.bat
+ Trying to shutdown server before build.
+ contrib/examples/uhttpd/hbmk_vc.bat
+ Added MSVC make file.
* contrib/examples/uhttpd/socket.c
! Made it compile with MSVC.
! Added SVN header.
* contrib/examples/uhttpd/uhttpd.prg
+ contrib/examples/uhttpd/uhttpdc.c
+ C level stuff moved to separate file.
; NOTE: I'm getting an "Argument error: +" when browse
to http://localhost:8082 (using Chrome if that matters).
* harbour/contrib/examples/uhttpd/uhttpd.prg
+ Added CGIExec() function
Now uHTTPD supports external cgi executables.
A big thank you to Giancarlo Niccolai that wrote Process*() functions
a to Przemek that has ported them to harbour.
; NOTE: security has to be checked.
A minimal executable test can be downloaded from:
http://www.fsgiudice.com/testcgi.zip
Expand into harbour/contrib/examples/uhttpd/home/cgi-bin, then run
it using http://localhost:8082/cgi-bin/testcgi.exe
* harbour/contrib/examples/uhttpd/uhttpd.prg
+ Added hb_Inet*() version
* harbour/contrib/examples/uhttpd/hbmk_b32.bat
+ Added support for hb_Inet*() version
; NOTE:
To use hb_Inet*() version build using
hbmk_b32.bat --with-inet
* harbour/contrib/examples/uhttpd/uhttpd.prg
+ Added support for ini file (default: uhttpd.ini)
+ modified to add support to Lib GD on batch request
* changed THREAD STATIC names with t_ prefix
* changed all global STATIC names with s_ prefix
- removed C level function EXE_FULLNAME (hb_argv( 0 ) does same)
* harbour/contrib/examples/uhttpd/hbmk_b32.bat
+ now support LIBGD on request
* harbour/contrib/examples/uhttpd/readme.txt
* updated infos
+ harbour/contrib/examples/uhttpd/uhttpd.ini
+ Added default ini file
if not found are used internal defaults or command line flags
* harbour/contrib/examples/uhttpd/home/counter.html
* Fixed typo
; NOTE:
Hope that will follow multiplatform version.
+ harbour/contrib/examples/uhttpd/modules/info.prg
+ New sample showing server variables
* harbour/contrib/examples/uhttpd/home/index.html
* harbour/contrib/examples/uhttpd/readme.txt
* harbour/contrib/examples/uhttpd/uhttpd.prg
* updated for new sample