1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 12:28:22 +01:00

Small bug fixes over 0.20.2 -Dan

This commit is contained in:
dan
1998-10-23 17:07:08 +00:00
parent 9af1c6c415
commit abde3e0c4e
13 changed files with 111 additions and 78 deletions

View File

@@ -4,7 +4,7 @@ Changes since version 0.20.1:
- fixed timer bug
- removed NoWindowUnderDock
- error reporting mechanism has changed in wrlib. Instead of a writing
the message in a string, it will place the error code in RErrorCode
the message in a string, it will place the error code in RErrorCode
- smoother icon selection
- persistent client supplied icon pixmaps
- fixed yet another crash on emacs exit bug
@@ -19,7 +19,7 @@ the message in a string, it will place the error code in RErrorCode
- fixed bug in libproplist
- fixed focus with sloppy
- changed permissions of shm segments to 0666. Now, if someone has a shm
leak, we can know who it is.
leak, we can know who it is.
- faster titlebar texture update
- faster icon kaboom
- added different undocking animation
@@ -35,7 +35,7 @@ leak, we can know who it is.
- selection retrieval moved to WINGs
- fixed workspacekey to switch workspaces in the current layer
- fixed workspacekey to not switch to inexisting workspace unless
AdvanceToNewWorkspace is YES
AdvanceToNewWorkspace is YES
- fixed bug with disappearing windows if a workspace switch is made on startup
- fixed blocking of window creation/destroy events when opening menu with kbd
- fixed aspect ratio setting bug
@@ -45,11 +45,11 @@ AdvanceToNewWorkspace is YES
- raised threshold for removing docked icons
- fixed HideOthers for windows with NoAppIcon=YES
- if Cancel is pressed in dialog box of %a in menu cmd lines, the command
will be canceled
will be canceled
- slightly better dithering for 8bpp
- apps menu will use $SHELL, instead of /bin/sh to run EXEC menu commands
- cleaned up some code (GetNormalHints(), wManageWindow(),
wGetWindowSavedState() et al, )
wGetWindowSavedState() et al, )
Changes since version 0.20.0:

View File

@@ -159,6 +159,11 @@ PLATFORM SPECIFIC NOTES:
If you want JPEG and TIFF support, make sure you have libtiff-dev
and libjpeg-dev installed.
- SuSE Linux
If you installed the Window Maker package from SuSE,
uninstall it before trying to compile wmaker or you
might have problems.
- MetroX (unknown version)
MetroX has a bug that corrupts pixmaps that are set as window
backgrounds. If you use MetroX and has weird problems with

11
NEWS
View File

@@ -80,7 +80,7 @@ If you want the animation, enable AutoFocus or use manual focus mode
The NoWindowUnderDock option was removed
----------------------------------------
To obtain the same result, use the "Floating Dock" option in the dock menu.
To obtain the same result, use the "Keep Dock On Top" option in the dock menu.
Persistent Program Suplied Icons
@@ -91,6 +91,15 @@ showing them after the app is exited. The icons are stored at
~/GNUstep/.AppInfo/WindowMaker/
Sound support
-------------
Sound support is now on by default. Even if you don't use sound the overhead
is very small, and has no impact on performance. If you still want to
optimize it and remove a few hundred of bytes, then use --disable-sound or
--enable-sound=no options when you configure Window Maker.
--- 0.20.0

View File

@@ -1268,7 +1268,7 @@ showData(_Panel *panel)
{
char *gspath;
char *menuPath;
proplist_t menu, pmenu;
proplist_t menu, pmenu, plPath;
char buffer[512];
int hasWSMenu=0;
@@ -1302,8 +1302,10 @@ showData(_Panel *panel)
} else {
pmenu = preProcessMenu(menu, &hasWSMenu);
}
PLSetFilename(pmenu, menuPath);
plPath = PLMakeString(menuPath);
free(menuPath);
PLSetFilename(pmenu, plPath);
PLRelease(plPath);
if (menu)
PLRelease(menu);

81
configure vendored
View File

@@ -20,7 +20,7 @@ ac_help="$ac_help
ac_help="$ac_help
--disable-shape disable shaped window extension support"
ac_help="$ac_help
--disable-shm disable usage of MIT-SHM extension"
--disable-shm disable usage of MIT-SHM extension"
ac_help="$ac_help
--with-gfx-libs pass compiler flags to look for gfx libraries"
ac_help="$ac_help
@@ -30,17 +30,17 @@ ac_help="$ac_help
ac_help="$ac_help
--disable-jpeg disable JPEG support through libjpeg"
ac_help="$ac_help
--disable-gif disable GIF support through libgif or libungif"
--disable-gif disable GIF support through libgif or libungif"
ac_help="$ac_help
--disable-tiff disable use of TIFF images through libtiff"
ac_help="$ac_help
--enable-debug enable debugging "
ac_help="$ac_help
--enable-sound enable sound support "
--disable-sound disable sound support "
ac_help="$ac_help
--with-pixmapdir=PATH specify where pixmaps are located [DATADIR/pixmaps]"
ac_help="$ac_help
--with-appspath=PATH specify the path of the GNUstep applications directory "
--with-appspath=PATH specify the path of the GNUstep applications directory"
ac_help="$ac_help
--enable-single-icon use single application icon per WM_INSTANCE+WM_CLASS
"
@@ -4041,15 +4041,16 @@ fi
sound=yes
# Check whether --enable-sound or --disable-sound was given.
if test "${enable_sound+set}" = set; then
enableval="$enable_sound"
:
sound=$enableval
else
enable_sound=no
sound=yes
fi
if test "$enable_sound" = yes; then
if test "$sound" = yes; then
SOUND="#define WMSOUND"
else
SOUND="#undef WMSOUND"
@@ -4123,12 +4124,12 @@ fi
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
echo "configure:4127: checking for sys/wait.h that is POSIX.1 compatible" >&5
echo "configure:4128: checking for sys/wait.h that is POSIX.1 compatible" >&5
if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4132 "configure"
#line 4133 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -4144,7 +4145,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
if { (eval echo configure:4148: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:4149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@@ -4168,17 +4169,17 @@ for ac_hdr in fcntl.h limits.h sys/ioctl.h sys/time.h sys/types.h libintl.h sys/
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:4172: checking for $ac_hdr" >&5
echo "configure:4173: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4177 "configure"
#line 4178 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:4182: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:4183: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4208,12 +4209,12 @@ done
echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
echo "configure:4212: checking for sys_siglist declaration in signal.h or unistd.h" >&5
echo "configure:4213: checking for sys_siglist declaration in signal.h or unistd.h" >&5
if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4217 "configure"
#line 4218 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -4225,7 +4226,7 @@ int main() {
char *msg = *(sys_siglist + 1);
; return 0; }
EOF
if { (eval echo configure:4229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:4230: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_decl_sys_siglist=yes
else
@@ -4246,12 +4247,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
echo "configure:4250: checking for working const" >&5
echo "configure:4251: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4255 "configure"
#line 4256 "configure"
#include "confdefs.h"
int main() {
@@ -4300,7 +4301,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
if { (eval echo configure:4304: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:4305: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -4321,12 +4322,12 @@ EOF
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
echo "configure:4325: checking for ANSI C header files" >&5
echo "configure:4326: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4330 "configure"
#line 4331 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -4334,7 +4335,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:4338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:4339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4351,7 +4352,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 4355 "configure"
#line 4356 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -4369,7 +4370,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 4373 "configure"
#line 4374 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -4390,7 +4391,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
#line 4394 "configure"
#line 4395 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -4401,7 +4402,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
if { (eval echo configure:4405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
if { (eval echo configure:4406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
:
else
@@ -4425,12 +4426,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
echo "configure:4429: checking for size_t" >&5
echo "configure:4430: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4434 "configure"
#line 4435 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4458,12 +4459,12 @@ EOF
fi
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
echo "configure:4462: checking for pid_t" >&5
echo "configure:4463: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4467 "configure"
#line 4468 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4491,12 +4492,12 @@ EOF
fi
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
echo "configure:4495: checking whether time.h and sys/time.h may both be included" >&5
echo "configure:4496: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4500 "configure"
#line 4501 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
@@ -4505,7 +4506,7 @@ int main() {
struct tm *tp;
; return 0; }
EOF
if { (eval echo configure:4509: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:4510: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
@@ -4575,7 +4576,7 @@ if test "$enable_shared" = yes; then
fi
echo $ac_n "checking for shared library support""... $ac_c" 1>&6
echo "configure:4579: checking for shared library support" >&5
echo "configure:4580: checking for shared library support" >&5
test=tmptest$$
cat > $test.c <<EOF
@@ -5134,6 +5135,12 @@ echo "WLIBS=\"-L$exec_prefix/lib -lWINGs -lwraster $LIBPL_LIBS $GFXLIBS -lm\""\
supported_gfx="$supported_gfx PPM (built-in)"
if test "x$MOFILES" = "x"; then
mof=none
else
mof=$MOFILES
fi
echo
echo "Window Maker was configured as follows:"
echo
@@ -5141,11 +5148,7 @@ echo "Installation path prefix: $prefix"
echo "Installation path prefix for binaries: $exec_prefix"
echo "Installation path for WPrefs.app: $wprefsdir"
echo "Graphic format libraries: $supported_gfx"
if test "x$MOFILES" = "x"; then
mof=none
else
mof=$MOFILES
fi
echo "Sound support: $sound"
echo "Translated message files to install: $mof"
if test "x$MOFILES" != "x"; then
echo "Installation path of translated messages: $NLSDIR"

View File

@@ -253,7 +253,7 @@ dnl MIT-SHM support
dnl ===============
shm=yes
AC_ARG_ENABLE(shm,
[ --disable-shm disable usage of MIT-SHM extension],
[ --disable-shm disable usage of MIT-SHM extension],
shm=$enableval, shm=yes)
if test "$shm" = yes; then
@@ -387,7 +387,7 @@ dnl giflib uses dangerous function naming... (namespace clashing)
dnl
jpeg=yes
AC_ARG_ENABLE(gif,
[ --disable-gif disable GIF support through libgif or libungif],
[ --disable-gif disable GIF support through libgif or libungif],
gif=$enableval, gif=yes)
if test "$gif" = yes; then
@@ -561,11 +561,13 @@ fi
AC_SUBST(DFLAGS)
dnl --Sound support - Dan
dnl Sound support - Dan
dnl =============================================
sound=yes
AC_ARG_ENABLE(sound,
[ --enable-sound enable sound support ],, enable_sound=no)
if test "$enable_sound" = yes; then
[ --disable-sound disable sound support ],
sound=$enableval, sound=yes)
if test "$sound" = yes; then
SOUND="#define WMSOUND"
else
SOUND="#undef WMSOUND"
@@ -602,7 +604,7 @@ dnl ==============================================
appspath=""
AC_ARG_WITH(appspath,
[ --with-appspath=PATH specify the path of the GNUstep applications directory ])
[ --with-appspath=PATH specify the path of the GNUstep applications directory])
if test "x$appspath" = "x"; then
gnustepdir="${prefix}/GNUstep"
@@ -786,6 +788,12 @@ dnl ==========================
supported_gfx="$supported_gfx PPM (built-in)"
if test "x$MOFILES" = "x"; then
mof=none
else
mof=$MOFILES
fi
echo
echo "Window Maker was configured as follows:"
echo
@@ -793,11 +801,7 @@ echo "Installation path prefix: $prefix"
echo "Installation path prefix for binaries: $exec_prefix"
echo "Installation path for WPrefs.app: $wprefsdir"
echo "Graphic format libraries: $supported_gfx"
if test "x$MOFILES" = "x"; then
mof=none
else
mof=$MOFILES
fi
echo "Sound support: $sound"
echo "Translated message files to install: $mof"
if test "x$MOFILES" != "x"; then
echo "Installation path of translated messages: $NLSDIR"

View File

@@ -96,7 +96,7 @@ EOF
for i in $files; do
echo $OTREE/$i
echo "echo \"Removing ../$i\"" >> $TMP/delfiles
if [ -d $OTREE/$delfiles ]; then
if [ -d $OTREE/$i ]; then
echo "rm -rf ../$i" >> $TMP/delfiles
else
echo "rm ../$i" >> $TMP/delfiles

View File

@@ -75,7 +75,8 @@ Pixmap LoadIcon(WScreen *scr, char *path, char *mask, int title_height);
void PlaceIcon(WScreen *scr, int *x_ret, int *y_ret);
void PlaceWindow(WWindow *wwin, int *x_ret, int *y_ret);
void PlaceWindow(WWindow *wwin, int *x_ret, int *y_ret,
unsigned int width, unsigned int height);
#ifdef USECPP
char *MakeCPPArgs(char *path);

View File

@@ -314,10 +314,10 @@ PlaceIcon(WScreen *scr, int *x_ret, int *y_ret)
static int
smartPlaceWindow(WWindow *wwin, int *x_ret, int *y_ret)
smartPlaceWindow(WWindow *wwin, int *x_ret, int *y_ret,
unsigned int width, unsigned int height)
{
WScreen *scr = wwin->screen_ptr;
int height,width;
int test_x = 0, test_y = Y_ORIGIN;
int loc_ok = False, tw,tx,ty,th;
int swidth, sx;
@@ -338,10 +338,10 @@ smartPlaceWindow(WWindow *wwin, int *x_ret, int *y_ret)
sx += wPreferences.icon_size + DOCK_EXTRA_SPACE - X_ORIGIN;
}
/* this was based on fvwm2's smart placement */
/* this was based on fvwm2's smart placement */
height += extra_height;
height = wwin->client.height+extra_height;
width = wwin->client.width;
while (((test_y + height) < (scr->scr_height)) && (!loc_ok)) {
test_x = sx;
@@ -409,10 +409,16 @@ smartPlaceWindow(WWindow *wwin, int *x_ret, int *y_ret)
}
/* Alfredo, shouldn't the cascade placement follow the !dock->lowered flag
* like smart placement?
* I didn't knew your intention about this, so I did not coded it, but it is
* quite simple to do, if you think it should. -Dan
*/
static void
cascadeWindow(WScreen *scr, WWindow *wwin, int *x_ret, int *y_ret, int h)
cascadeWindow(WScreen *scr, WWindow *wwin, int *x_ret, int *y_ret,
unsigned int width, unsigned int height, int h)
{
unsigned int extra_height, height, width;
unsigned int extra_height;
if (wwin->frame)
extra_height = wwin->frame->top_width + wwin->frame->bottom_width;
@@ -421,8 +427,7 @@ cascadeWindow(WScreen *scr, WWindow *wwin, int *x_ret, int *y_ret, int h)
*x_ret = h * scr->cascade_index + X_ORIGIN;
*y_ret = h * scr->cascade_index + Y_ORIGIN;
height = wwin->client.height + extra_height;
width = wwin->client.width;
height += extra_height;
if (width + *x_ret > scr->scr_width || height + *y_ret > scr->scr_height) {
scr->cascade_index = 0;
@@ -433,7 +438,8 @@ cascadeWindow(WScreen *scr, WWindow *wwin, int *x_ret, int *y_ret, int h)
void
PlaceWindow(WWindow *wwin, int *x_ret, int *y_ret)
PlaceWindow(WWindow *wwin, int *x_ret, int *y_ret,
unsigned width, unsigned height)
{
WScreen *scr = wwin->screen_ptr;
int h = scr->title_font->height+TITLEBAR_EXTRA_HEIGHT;
@@ -444,7 +450,7 @@ PlaceWindow(WWindow *wwin, int *x_ret, int *y_ret)
break;
case WPM_SMART:
if (smartPlaceWindow(wwin, x_ret, y_ret))
if (smartPlaceWindow(wwin, x_ret, y_ret, width, height))
break;
/* there isn't a break here, because if we fail, it should fall
through to cascade placement, as people who want tiling want
@@ -454,7 +460,7 @@ PlaceWindow(WWindow *wwin, int *x_ret, int *y_ret)
if (wPreferences.window_placement == WPM_SMART)
scr->cascade_index++;
cascadeWindow(scr, wwin, x_ret, y_ret, h);
cascadeWindow(scr, wwin, x_ret, y_ret, width, height, h);
if (wPreferences.window_placement == WPM_CASCADE)
scr->cascade_index++;

View File

@@ -770,7 +770,7 @@ wManageWindow(WScreen *scr, Window window)
} else if (wwin->transient_for==None && !scr->flags.startup &&
workspace==scr->current_workspace && !iconic &&
!(wwin->normal_hints->flags & (USPosition|PPosition))) {
PlaceWindow(wwin, &x, &y);
PlaceWindow(wwin, &x, &y, width, height);
}
if (wwin->window_flags.dont_move_off)
@@ -839,7 +839,7 @@ wManageWindow(WScreen *scr, Window window)
int gx, gy;
wClientGetGravityOffsets(wwin, &gx, &gy);
/* set the positio of the frame on screen */
/* set the position of the frame on screen */
x += gx * FRAME_BORDER_WIDTH;
y += gy * FRAME_BORDER_WIDTH;
/* if gravity is to the south, account for the border sizes */

View File

@@ -21,6 +21,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>

View File

@@ -23,6 +23,7 @@
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <sys/time.h>

View File

@@ -43,6 +43,7 @@ char *alloca ();
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <errno.h>
#include "wraster.h"
@@ -101,7 +102,7 @@ RGetImageFromXPMData(RContext *context, char **data)
if (!color_table[0] || !color_table[1] || !color_table[2] ||
!color_table[3] || !symbol_table || !bsize) {
RErrorCode = RERR_MEMORY;
RErrorCode = RERR_NOMEMORY;
alloca(0);
return NULL;
}
@@ -270,7 +271,7 @@ RLoadXPM(RContext *context, char *file, int index)
if (!color_table[0] || !color_table[1] || !color_table[2] ||
!color_table[3] || !symbol_table || !bsize) {
RErrorCode = RERR_MEMORY;
RErrorCode = RERR_NOMEMORY;
fclose(f);
alloca(0);
return NULL;