Compare commits

..

2 commits

Author SHA1 Message Date
c48a3f3964 add: use shell to replace generate .a 2023-04-13 02:46:26 +08:00
b4dd5d1165 fix: vepe, part of staden/bap 2023-04-13 02:45:32 +08:00
6 changed files with 229 additions and 274 deletions

View file

@ -3,9 +3,9 @@
# This makefile generates the following staden programs which
# run under xterm (normal, `N') and those which run directly under X.
NPROGS= mep nip pip bap sap sip splitp1 splitp2 splitp3 sethelp convert_project
LPROGS= nipl pip sipl
XPROGS= xmep xnip xpip xbap xsap xsip
NPROGS= mep nip bap sap sip splitp1 splitp2 splitp3 sethelp
LPROGS= nipl
XPROGS= xmep xnip xbap xsap xsip
PROGS= $(NPROGS) $(LPROGS) $(XPROGS)
@ -43,7 +43,7 @@ INCLUDES= -I$(SRC) -I$(STADENSRC) -I$(TEDSRC) -I$(OSPSRC) -I$(MISCSRC)
CC= cc
CFLAGS= -g $(INCLUDES)
F77= gfortran
FFLAGS= -g -C
FFLAGS= -g -fdec -std=legacy -C
#FLIBS= -lfor -lUfor -lots -lFutil
FLIBS = -lm -lutil
@ -53,7 +53,7 @@ XLFLAGS= $(XLIBS) $(FLIBS)
LD = gfortran
XLD = cc
LDFLAGS = -g
LDFLAGS = -g -fdec -std=legacy
#
# Avoid compilation of objects in remote directories
@ -76,7 +76,7 @@ SEQLIB=\
#
CCORE=\
$(STADENBIN)/postscript.o\
$(STADENBIN)/Graph.o\
$(TEDBIN)/Graph.o\
$(STADENBIN)/plotLog.o\
$(STADENBIN)/help.o\
$(STADENBIN)/dialogues.o\
@ -101,7 +101,7 @@ COBJS2=\
#
COMMONOBJSB=\
$(STADENBIN)/fmain.o\
$(STADENBIN)/seeme-dec.o\
$(STADENBIN)/seeme-aix.o\
$(STADENBIN)/nxspec.o\
$(STADENBIN)/userface.o\
$(STADENBIN)/userfacecom.o\
@ -118,13 +118,13 @@ SCOMMONOBJS=\
$(COMMONOBJSB)
XCOMMONOBJS=\
$(STADENBIN)/seeme-dec.o\
$(STADENBIN)/seeme-aix.o\
$(STADENBIN)/xspec.o\
$(STADENBIN)/subs89.a\
$(COBJS)
XCOMMONOBJS2=\
$(STADENBIN)/seeme-dec.o\
$(STADENBIN)/seeme-aix.o\
$(STADENBIN)/xspec.o\
$(STADENBIN)/subs89.a\
$(COBJS2)
@ -562,9 +562,9 @@ splitp3: $(SPLITP3OBJS)
# rm -r $$TMPDIR
%.a: $(SRC)/%.f
$(F77) $(FFLAGS) -c *.f;
ar rcv $$BINDIR/$@ *.o;
#%.a: $(SRC)/%.f
# $(F77) $(FFLAGS) -c *.f;
# ar rcv $$BINDIR/$@ *.o;

19
src/staden/gen_a.sh Normal file
View file

@ -0,0 +1,19 @@
#!/bin/bash
#
for fortran in $(ls *.f)
do
mkdir -p ${fortran%??}
cp $fortran ${fortran%??}
cd ${fortran%??}
fsplit ${fortran}
rm ${fortran}
gfortran -g -fdec -std=legacy -C -c *.f
ar rcv ${fortran%??}.a *.o
ranlib ${fortran%??}.a
cd ..
cp ${fortran%??}/*.a .
rm -rf ${fortran%??}
done

View file

@ -28,10 +28,11 @@ INCLUDES= -I$(SRC) -I$(TEDSRC) -I$(MISCSRC)
CC= cc
CFLAGS= -g $(INCLUDES)
F77= gfortran
FFLAGS= -g -fdec -C
FFLAGS= -g -fdec -std=legacy -C
FLIBS= -lfor -lutil -lUfor -lots -lFutil -lm -lfor -lutil -lUfor -lots -lFutil
XLIBS= -lXaw -lXt -lXmu -lXext -lX11 -ldnet_stub
FLIBS = -lutil -lm
#FLIBS= -lfor -lutil -lUfor -lots -lFutil -lm
XLIBS= -lXaw -lXt -lXmu -lXext -lX11
LFLAGS= $(FLIBS)
XLFLAGS= $(FLIBS) $(XLIBS)
@ -78,7 +79,7 @@ XDAPCOBJS=\
#
COMMONOBJSB=\
fmain.o\
seeme-dec.o\
seeme-aix.o\
nxspec.o\
userface.o\
userfacecom.o\
@ -95,13 +96,13 @@ SCOMMONOBJS=\
$(COMMONOBJSB)
XCOMMONOBJS=\
seeme-dec.o\
seeme-aix.o\
xspec.o\
subs89.a\
$(COBJS)
XDAPCOMMONOBJS=\
seeme-dec.o\
seeme-aix.o\
xspec.o\
subs89.a\
$(XDAPCOBJS)
@ -549,29 +550,34 @@ vep: $(VEPOBJS)
# avoid filling up the (small on this machine) /tmp directory
# with compiler debugging information.
#
#%.a: $(SRC)/%.f
%.a: $(SRC)/%.f
sh gen_a.sh
# BINDIR=`pwd`; \
# cd $(SRC); \
# SRCDIR=`pwd`; \
#
# TMPDIR=/tmp/staden$$$$; \
# if test ! -d $$TMPDIR; \
# then mkdir $$TMPDIR; \
# fi; \
# cd $$TMPDIR; \
# rm -f *.f *.o; \
#
# fsplit $$SRCDIR/`expr $< : '.*/\(.*\)' \| $<`; \
# $(F77) $(FFLAGS) -c *.f; \
# rm *.f; \
# rm -f $$BINDIR/$@; \
# ar rcv $$BINDIR/$@ *.o; \
# ranlib $$BINDIR/$@; \
# rm *.o; \
#
## rm *.f; \
#
# rm -f $@; \
# ar rcv $@ *.o; \
# ranlib $@; \
##rm *.o; \
#
# cd $$BINDIR; \
# rm -r $$TMPDIR
%.a: $(SRC)/%.f
$(F77) $(FFLAGS) -c *.f; \
ar rcv *.o
#.f.a:
# $(F77) $(FFLAGS) -c $<

View file

@ -670,6 +670,7 @@ C
WRITE(*,*)'END IN GETRSL'
END
INTEGER FUNCTION SEEKRS(IDEV,IREC)
INTEGER FSEEK
EXTERNAL FSEEK
C INTEGER FSEEK
SEEKRS = FSEEK(IDEV,IREC,0)
END

View file

@ -2,9 +2,10 @@
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include "userface.h"
#include "helpnmenu.h"
#include "FtoC.h" /* IMPORT: Fstr2Cstr and Cstr2Fstr */
#include "helpnmenu.h"
#include "userface.h"
/*
* Prompts the user with either one yes/no question or another.
@ -16,7 +17,8 @@
* 1 = no
* -1 = cancel
*/
int yesono(int choice, char *prompt1, char *prompt2) {
int yesono(int choice, char *prompt1, char *prompt2)
{
int a;
switch (choice) {
@ -24,8 +26,7 @@ int yesono(int choice, char *prompt1, char *prompt2) {
return yesno(prompt1);
case 1:
a = yesno(prompt2);
if (a>=0)
a ^= 1;
if (a >= 0) a ^= 1;
return a;
default:
fputs("yesno() called with bad 'choice'\n", stderr);
@ -41,20 +42,11 @@ int yesono(int choice, char *prompt1, char *prompt2) {
|* *|
\*--------------------------------------------------------------------------*/
void getint_x(int_f *MININ_p,
int_f *MAXIN_p,
int_f *DEF_p,
char *PROMPT_p,
void getint_x(int_f *MININ_p, int_f *MAXIN_p, int_f *DEF_p, char *PROMPT_p,
int_f *VALUE_p, /* out: result */
int_f *KBIN_p,
int_f *KBOUT_p,
int_f *IHELPS_p,
int_f *IHELPE_p,
char *HELPF_p,
int_f *IDEVH_p,
int_f *IOK_p, /* out: status */
int_fl PROMPT_l,
int_fl HELPF_l)
int_f *KBIN_p, int_f *KBOUT_p, int_f *IHELPS_p, int_f *IHELPE_p,
char *HELPF_p, int_f *IDEVH_p, int_f *IOK_p, /* out: status */
int_fl PROMPT_l, int_fl HELPF_l)
/*
* Prompt for an integer in the range *MININ_p <= i <= *MAXIN_p
* IOK=0 => OK
@ -66,26 +58,17 @@ void getint_x(int_f *MININ_p,
Fstr2Cstr(PROMPT_p, PROMPT_l, prompt, (int_fl)sizeof(prompt));
*VALUE_p = getint((int)*MININ_p, (int)*MAXIN_p, (int)*DEF_p,
prompt, &status);
*VALUE_p =
getint((int)*MININ_p, (int)*MAXIN_p, (int)*DEF_p, prompt, &status);
*IOK_p = (int_f)((status < 0) ? 1 : 0);
return;
}
void getrl_x(float *MININ_p,
float *MAXIN_p,
float *DEF_p,
char *PROMPT_p,
void getrl_x(float *MININ_p, float *MAXIN_p, float *DEF_p, char *PROMPT_p,
float *VALUE_p, /* out: result */
int_f *KBIN_p,
int_f *KBOUT_p,
int_f *IHELPS_p,
int_f *IHELPE_p,
char *HELPF_p,
int_f *IDEVH_p,
int_f *IOK_p,
int_fl PROMPT_l,
int_f *KBIN_p, int_f *KBOUT_p, int_f *IHELPS_p, int_f *IHELPE_p,
char *HELPF_p, int_f *IDEVH_p, int_f *IOK_p, int_fl PROMPT_l,
int_fl HELPF_l)
/*
* Prompt for a real in the range *MININ_p <= i <= *MAXIN_p
@ -105,19 +88,10 @@ void getrl_x(float *MININ_p,
return;
}
void getrls_x(float *MININ_p,
float *MAXIN_p,
float *DEF_p,
char *PROMPT_p,
void getrls_x(float *MININ_p, float *MAXIN_p, float *DEF_p, char *PROMPT_p,
float *VALUE_p, /* out: result */
int_f *KBIN_p,
int_f *KBOUT_p,
int_f *IHELPS_p,
int_f *IHELPE_p,
char *HELPF_p,
int_f *IDEVH_p,
int_f *IOK_p,
int_fl PROMPT_l,
int_f *KBIN_p, int_f *KBOUT_p, int_f *IHELPS_p, int_f *IHELPE_p,
char *HELPF_p, int_f *IDEVH_p, int_f *IOK_p, int_fl PROMPT_l,
int_fl HELPF_l)
/*
* Prompt for a real in the range *MININ_p <= i <= *MAXIN_p
@ -137,16 +111,9 @@ void getrls_x(float *MININ_p,
return;
}
void yesno_x(int_f *ANSWER_p,
char *PROMPT_p,
int_f *IHELPS_p,
int_f *IHELPE_p,
char *HELPF_p,
int_f *IDEVH_p,
int_f *KBIN_p,
int_f *KBOUT_p,
int_fl PROMPT_l,
int_fl HELPF_l)
void yesno_x(int_f *ANSWER_p, char *PROMPT_p, int_f *IHELPS_p, int_f *IHELPE_p,
char *HELPF_p, int_f *IDEVH_p, int_f *KBIN_p, int_f *KBOUT_p,
int_fl PROMPT_l, int_fl HELPF_l)
/*
* Prompt the user with *PROMPT_l and get a YES or NO response.
* ANSWER=-1 => Cancel
@ -160,18 +127,9 @@ void yesno_x(int_f *ANSWER_p,
*ANSWER_p = (int_f)yesno(prompt);
}
void yesono_x(int_f *CHOICE_p,
char *P1_p,
char *P2_p,
int_f *IHELPS_p,
int_f *IHELPE_p,
char *HELPF_p,
int_f *IDEVH_p,
int_f *KBIN_p,
int_f *KBOUT_p,
int_fl P1_l,
int_fl P2_l,
int_fl HELPF_l)
void yesono_x(int_f *CHOICE_p, char *P1_p, char *P2_p, int_f *IHELPS_p,
int_f *IHELPE_p, char *HELPF_p, int_f *IDEVH_p, int_f *KBIN_p,
int_f *KBOUT_p, int_fl P1_l, int_fl P2_l, int_fl HELPF_l)
/*
* If CHOICE is 0, present a YESNO dialogue with prompt P1.
* If CHOICE is 1, present a YESNO dialogue with prompt P2.
@ -190,12 +148,8 @@ void gtstr_x(char *P_p, /* prompt */
char *NEW_p, /* out: dialogue result */
int_f *LENGTH_p, /* in: significant length of *STRING_p
out: significant length of *NEW_p */
int_f *KBOUT_p,
int_f *KBIN_p,
int_f *INFLAG_p, /* out: status */
int_fl P_l,
int_fl STRING_l,
int_fl NEW_l)
int_f *KBOUT_p, int_f *KBIN_p, int_f *INFLAG_p, /* out: status */
int_fl P_l, int_fl STRING_l, int_fl NEW_l)
/*
* Prompt with P for a string, default value STRING.
* Return new string in NEW.
@ -213,10 +167,12 @@ void gtstr_x(char *P_p, /* prompt */
if (*LENGTH_p > 0) {
Fstr2Cstr(STRING_p, STRING_l, def, (int_fl)sizeof(def));
defptr = def;
} else
}
else
defptr = 0;
ret = gtstr(question, defptr, NEW_p, (size_t)((NEW_l==1)?40:NEW_l));
ret =
gtstr(question, defptr, NEW_p, (size_t)((NEW_l == 1) ? 40 : NEW_l));
switch (ret) {
case -1:
*INFLAG_p = 2;
@ -239,9 +195,7 @@ void getstr_x(char *P_p, /* prompt */
int_f *MAXSTR_p, /* array length of *STRING_p and *NEW_p */
int_f *LENGTH_p, /* in: significant length of *STRING_p
out: significant length of *NEW_p */
int_f *KBOUT_p,
int_f *KBIN_p,
int_f *INFLAG_p, /* out: status */
int_f *KBOUT_p, int_f *KBIN_p, int_f *INFLAG_p, /* out: status */
int_fl P_l)
/*
* Present a dialogue requesting a string result with the given prompt
@ -252,31 +206,16 @@ void getstr_x(char *P_p, /* prompt */
* given *STRING_p and *NEW_p.
*/
{
gtstr_x(P_p,
STRING_p,
NEW_p,
LENGTH_p,
KBOUT_p,
KBIN_p,
INFLAG_p,
P_l,
*MAXSTR_p,
*MAXSTR_p);
gtstr_x(P_p, STRING_p, NEW_p, LENGTH_p, KBOUT_p, KBIN_p, INFLAG_p, P_l,
*MAXSTR_p, *MAXSTR_p);
}
void radion_x(char *TITLE_p,
char *PROMPT_p, /* Actually: *PROMPT_p[*NB_p] */
void radion_x(char *TITLE_p, char *PROMPT_p, /* Actually: *PROMPT_p[*NB_p] */
int_f *NB_p, /* Number of buttons (1..NB) */
int_f *CHOICE_p, /* in: default button
out: selected button */
int_f *IHELPS_p,
int_f *IHELPE_p,
char *HELPF_p,
int_f *IDEVH_p,
int_f *KBIN_p,
int_f *KBOUT_p,
int_fl TITLE_l,
int_fl PROMPT_l,
int_f *IHELPS_p, int_f *IHELPE_p, char *HELPF_p, int_f *IDEVH_p,
int_f *KBIN_p, int_f *KBOUT_p, int_fl TITLE_l, int_fl PROMPT_l,
int_fl HELPF_l)
/*
* Present a ``radio button'' dialogue allowing the user to select
@ -294,7 +233,8 @@ void radion_x(char *TITLE_p,
opt[0] = (char *)malloc((unsigned int)((PROMPT_l + 1) * numopts));
for (i = 0; i < numopts; i++) {
opt[i] = opt[0] + (PROMPT_l + 1) * i;
Fstr2Cstr(PROMPT_p+(i*PROMPT_l), PROMPT_l, opt[i], PROMPT_l+1);
Fstr2Cstr(PROMPT_p + (i * PROMPT_l), PROMPT_l, opt[i],
PROMPT_l + 1);
}
Fstr2Cstr(TITLE_p, TITLE_l, title, (int_fl)sizeof(title));
@ -306,17 +246,11 @@ void radion_x(char *TITLE_p,
return;
}
void check4_x(char *P1_p, char *P2_p, char *P3_p, char *P4_p,
int_f *C1_p, int_f *C2_p, int_f *C3_p, int_f *C4_p,
int_f *IHELPS_p,
int_f *IHELPE_p,
char *HELPF_p,
int_f *IDEVH_p,
int_f *KBIN_p,
int_f *KBOUT_p,
int_f *IOK_p,
int_fl P1_l, int_fl P2_l, int_fl P3_l, int_fl P4_l,
int_fl HELPF_l)
void check4_x(char *P1_p, char *P2_p, char *P3_p, char *P4_p, int_f *C1_p,
int_f *C2_p, int_f *C3_p, int_f *C4_p, int_f *IHELPS_p,
int_f *IHELPE_p, char *HELPF_p, int_f *IDEVH_p, int_f *KBIN_p,
int_f *KBOUT_p, int_f *IOK_p, int_fl P1_l, int_fl P2_l,
int_fl P3_l, int_fl P4_l, int_fl HELPF_l)
/*
* Present a ``checkbox'' dialogue allowing the user to alter the
* Boolean state of four items.
@ -330,10 +264,14 @@ void check4_x(char *P1_p, char *P2_p, char *P3_p, char *P4_p,
char *prompts[4];
int *bools[4];
prompts[0] = P1_p; bools[0] = (int *)C1_p;
prompts[1] = P2_p; bools[1] = (int *)C2_p;
prompts[2] = P3_p; bools[2] = (int *)C3_p;
prompts[3] = P4_p; bools[3] = (int *)C4_p;
prompts[0] = P1_p;
bools[0] = (int *)C1_p;
prompts[1] = P2_p;
bools[1] = (int *)C2_p;
prompts[2] = P3_p;
bools[2] = (int *)C3_p;
prompts[3] = P4_p;
bools[3] = (int *)C4_p;
ret = checkn(4, prompts, bools);
@ -343,8 +281,7 @@ void check4_x(char *P1_p, char *P2_p, char *P3_p, char *P4_p,
*IOK_p = 1;
}
void getopt_x(int_f *KBIN_p,
int_f *KOPT_p,
void getopt_x(int_f *KBIN_p, int_f *KOPT_p,
int_f *IOPT_p) /* out: option number selected */
/*
* Select a function to execute
@ -367,9 +304,7 @@ void getopt_x(int_f *KBIN_p,
}
}
void showfi_x(int_f *KBOUT_p,
char *STRING_p,
int_fl STRING_l)
void showfi_x(int_f *KBOUT_p, char *STRING_p, int_fl STRING_l)
/*
* Display `STRING', the name of the current file(s).
*/
@ -380,10 +315,7 @@ void showfi_x(int_f *KBOUT_p,
showfi(func);
}
void showfu_x(int_f *KBOUT_p,
char *STRING_p,
int_fl STRING_l)
void showfu_x(int_f *KBOUT_p, char *STRING_p, int_fl STRING_l)
/*
* Display `STRING', the name of the current function.
*/
@ -394,9 +326,7 @@ void showfu_x(int_f *KBOUT_p,
showfu(func);
}
void errom_x(int_f *KBOUT_p,
char *STRING_p,
int_fl STRING_l)
void errom_x(int_f *KBOUT_p, char *STRING_p, int_fl STRING_l)
/*
* Display the error message `STRING'.
*/
@ -421,10 +351,8 @@ void busy_x(int_f *KBOUT_p)
* 0 for ok
* -1 for cancel
*/
void bpause_x(int_f *KBIN_p,
int_f *KBOUT_p,
int_f *IOK_p) {
void bpause_x(int_f *KBIN_p, int_f *KBOUT_p, int_f *IOK_p)
{
*IOK_p = (int_f)bpause();
}

View file

@ -37,7 +37,8 @@ FFLAGS= -g
LD= gfortran
LDFLAGS= -g
FLIBS= -lfor -lutil -lUfor -lots -lFutil -lm -lfor -lutil -lUfor -lots -lFutil
FLAGS = -lutil -lm
#FLIBS= -lfor -lutil -lUfor -lots -lFutil -lm -lfor -lutil -lUfor -lots -lFutil
XLIBS= -lXaw -lXt -lXmu -lXext -lX11
#LFLAGS= $(FLIBS)
XLFLAGS= $(FLIBS) $(XLIBS)
@ -52,7 +53,7 @@ $(STADENBIN)/%.o : $(STADENSRC)/%.c
# Common objects, needed by every program
#
COMMONOBJS=\
$(STADENBIN)/seeme-dec.o\
$(STADENBIN)/seeme-aix.o\
$(STADENBIN)/nxspec.o\
$(STADENBIN)/userface.o\
$(STADENBIN)/userfacecom.o\