Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Synchronet
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Main
Synchronet
Commits
a3da7932
Commit
a3da7932
authored
22 years ago
by
rswindell
Browse files
Options
Downloads
Patches
Plain Diff
Unix-build creates drop-files with CRLF if the XTRN_NATIVE flag is not set.
Drop-filenames can be optionally created in lowercase.
parent
fa8bf44c
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/sbbs3/xtrn_sec.cpp
+130
-27
130 additions, 27 deletions
src/sbbs3/xtrn_sec.cpp
with
130 additions
and
27 deletions
src/sbbs3/xtrn_sec.cpp
+
130
−
27
View file @
a3da7932
...
...
@@ -273,6 +273,29 @@ time_t juliantounix(ulong j)
#endif
}
#ifdef __unix__
static
void
lfexpand
(
char
*
str
,
ulong
misc
)
{
char
*
p
;
char
len
=
0
;
char
newstr
[
1024
];
if
(
misc
&
XTRN_NATIVE
)
return
;
for
(
p
=
str
;
*
p
&&
len
<
sizeof
(
newstr
)
-
1
;
p
++
)
{
if
(
*
p
==
'\n'
)
newstr
[
len
++
]
=
'\r'
;
newstr
[
len
++
]
=*
p
;
}
newstr
[
len
]
=
0
;
strcpy
(
str
,
newstr
);
}
#else
#define lfexpand(str, misc)
#endif
/****************************************************************************/
/* Creates various types of xtrn (Doors, Chains, etc.) data (drop) files. */
/****************************************************************************/
...
...
@@ -289,7 +312,10 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
stats_t
stats
;
if
(
type
==
XTRN_SBBS
)
{
/* SBBS XTRN.DAT file */
sprintf
(
str
,
"%sXTRN.DAT"
,
dropdir
);
strcpy
(
tmp
,
"XTRN.DAT"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
);
return
;
...
...
@@ -300,6 +326,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
cfg
.
sys_name
/* System name */
,
cfg
.
sys_op
/* Sysop name */
,
cfg
.
sys_guru
);
/* Guru name */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%s
\n
%s
\n
%u
\n
%u
\n
%lu
\n
%s
\n
%lu
\n
%lu
\n
"
...
...
@@ -313,6 +340,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
?
"Yes"
:
"Mono"
:
"No"
,
rows
/* User Screen lines */
,
useron
.
cdt
+
useron
.
freecdt
);
/* User Credits */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%u
\n
%u
\n
%s
\n
%c
\n
%u
\n
%s
\n
"
...
...
@@ -322,6 +350,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
useron
.
sex
/* User sex (M/F) */
,
useron
.
number
/* User number */
,
useron
.
phone
);
/* User phone number */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%u
\n
%u
\n
%x
\n
%lu
\n
%s
\n
%s
\n
"
...
...
@@ -344,9 +373,11 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
0L
#endif
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%u
\n
"
,
cfg
.
total_xtrns
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
/* Total external programs */
for
(
i
=
0
;
i
<
cfg
.
total_xtrns
;
i
++
)
{
/* Each program's name */
...
...
@@ -354,7 +385,8 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
strcpy
(
str
,
cfg
.
xtrn
[
i
]
->
name
);
else
str
[
0
]
=
0
;
/* Blank if no access */
strcat
(
str
,
crlf
);
strcat
(
str
,
"
\n
"
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
}
...
...
@@ -362,6 +394,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
ltoaf
(
useron
.
flags1
,
tmp
)
/* Main flags */
,
ltoaf
(
useron
.
flags2
,
tmp2
)
/* Transfer flags */
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%s
\n
%s
\n
%lx
\n
%s
\n
%s
\n
%s
\n
"
...
...
@@ -372,6 +405,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
useron
.
location
/* City/State */
,
useron
.
zipcode
/* Zip/Postal code */
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%s
\n
%s
\n
%d
\n
%s
\n
%lu
\n
%s
\n
%s
\n
%s
\n
%s
\n
"
...
...
@@ -396,13 +430,17 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
-
1
#endif
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
close
(
file
);
}
else
if
(
type
==
XTRN_WWIV
)
{
/* WWIV CHAIN.TXT File */
sprintf
(
str
,
"%sCHAIN.TXT"
,
dropdir
);
strcpy
(
tmp
,
"CHAIN.TXT"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
);
return
;
...
...
@@ -416,6 +454,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
getage
(
&
cfg
,
useron
.
birth
)
/* User age */
,
useron
.
sex
);
/* User sex (M/F) */
strupr
(
str
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%lu
\n
%s
\n
%u
\n
%lu
\n
%u
\n
%u
\n
%u
\n
%u
\n
%u
\n
"
...
...
@@ -428,6 +467,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
SYSOP
/* Sysop? (1/0) */
,(
useron
.
misc
&
ANSI
)
?
1
:
0
/* ANSI ? (1/0) */
,
online
==
ON_REMOTE
);
/* Remote (1/0) */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%lu
\n
%s
\n
%s
\n
%s
\n
%lu
\n
%d
\n
%s
\n
%s
\n
"
...
...
@@ -447,13 +487,17 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
useron
.
dlb
/
1024UL
/* User downloaded kbytes */
,
useron
.
dls
/* User downloaded files */
,
"8N1"
);
/* Data, parity, stop bits */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
close
(
file
);
}
else
if
(
type
==
XTRN_GAP
)
{
/* Gap DOOR.SYS File */
sprintf
(
str
,
"%sDOOR.SYS"
,
dropdir
);
strcpy
(
tmp
,
"DOOR.SYS"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
);
return
;
...
...
@@ -469,6 +513,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
'Y'
/* 07: Printer toggle */
,
'Y'
/* 08: Page bell */
,
'Y'
);
/* 09: Caller alarm */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%s
\n
%s
\n
%s
\n
%s
\n
%s
\n
"
...
...
@@ -477,6 +522,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
useron
.
phone
/* 12: User home phone */
,
useron
.
phone
/* 13: User work/data phone */
,
useron
.
pass
);
/* 14: User password */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%u
\n
%u
\n
%s
\n
%lu
\n
%lu
\n
%s
\n
"
...
...
@@ -487,6 +533,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
tleft
/
60
/* 19: User time left in min */
,
useron
.
misc
&
NO_EXASCII
/* 20: GR if COLOR ANSI */
?
"7E"
:
(
useron
.
misc
&
(
ANSI
|
COLOR
))
==
(
ANSI
|
COLOR
)
?
"GR"
:
"NG"
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%lu
\n
%c
\n
%s
\n
%u
\n
%s
\n
%u
\n
%c
\n
%u
\n
%u
\n
"
...
...
@@ -499,6 +546,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
'Y'
/* 27: Default protocol */
,
useron
.
uls
/* 28: User total uploads */
,
useron
.
dls
);
/* 29: User total downloads */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%u
\n
%lu
\n
%s
\n
%s
\n
%s
\n
%s"
...
...
@@ -513,6 +561,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
0
// sys_eventtime/60 /* 37: Event time HH:MM */
,
0
// sys_eventtime%60
,
'Y'
);
/* 38: Error correcting connection */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
tm
=
localtime
(
&
ns_time
);
...
...
@@ -526,6 +575,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
tm
->
tm_mon
+
1
/* 43: File new-scan date */
,
tm
->
tm_mday
,
TM_YEAR
(
tm
->
tm_year
));
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
tm
=
localtime
(
&
logontime
);
...
...
@@ -544,6 +594,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
useron
.
comment
/* 50: User comment */
,
0
/* 51: Total doors opened */
,
useron
.
posts
);
/* 52: User message left */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
close
(
file
);
...
...
@@ -551,9 +602,12 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
else
if
(
type
==
XTRN_RBBS
||
type
==
XTRN_RBBS1
)
{
if
(
type
==
XTRN_RBBS
)
sprintf
(
str
,
"%s
DORINFO%X.DEF"
,
dropdir
,
cfg
.
node_num
);
/* support 1-F */
sprintf
(
tmp
,
"
DORINFO%X.DEF"
,
cfg
.
node_num
);
/* support 1-F */
else
sprintf
(
str
,
"%sDORINFO1.DEF"
,
dropdir
);
sprintf
(
tmp
,
"DORINFO1.DEF"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
);
return
;
...
...
@@ -574,6 +628,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
dte_rate
/* DTE rate */
,
0
);
/* Network type */
strupr
(
str
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
strcpy
(
tmp
,
name
);
...
...
@@ -590,11 +645,15 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
useron
.
level
/* Security level */
,
tleft
/
60
);
/* Time left in minutes */
strupr
(
str
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
close
(
file
);
sprintf
(
str
,
"%sEXITINFO.BBS"
,
dropdir
);
strcpy
(
tmp
,
"EXITINFO.BBS"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
);
return
;
...
...
@@ -728,7 +787,10 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
}
else
if
(
type
==
XTRN_WILDCAT
)
{
/* WildCat CALLINFO.BBS File */
sprintf
(
str
,
"%sCALLINFO.BBS"
,
dropdir
);
strcpy
(
tmp
,
"CALLINFO.BBS"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
);
return
;
...
...
@@ -768,6 +830,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
useron
.
misc
&
ANSI
?
"COLOR"
:
"MONO"
/* ANSI ??? */
,
useron
.
pass
/* Password */
,
useron
.
number
);
/* User number */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
tm
=
localtime
(
&
now
);
...
...
@@ -779,6 +842,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
tm
->
tm_mon
+
1
,
tm
->
tm_mday
/* MM/DD/YY */
,
TM_YEAR
(
tm
->
tm_year
)
,
nulstr
);
/* Conferences with access */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
tm
=
localtime
(
&
useron
.
laston
);
...
...
@@ -792,6 +856,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
unixtodstr
(
&
cfg
,
useron
.
laston
,
tmp
)
/* Last on date and time */
,
tm
->
tm_hour
/* MM/DD/YY HH:MM */
,
tm
->
tm_min
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
tm
=
localtime
(
&
ns_time
);
...
...
@@ -808,6 +873,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
0
/* Highest message read */
,
useron
.
uls
/* Total files uploaded */
,
useron
.
dls
);
/* Total files downloaded */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%u
\n
%s
\n
COM%u
\n
%s
\n
%lu
\n
%s
\n
%s
\n
"
...
...
@@ -818,6 +884,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
dte_rate
/* DTE rate */
,
"FALSE"
/* Already connected? */
,
"Normal Connection"
);
/* Normal or ARQ connect */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
tm
=
localtime
(
&
now
);
...
...
@@ -828,13 +895,17 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
tm
->
tm_hour
,
tm
->
tm_min
/* Current time HH:MM */
,
cfg
.
node_num
/* Node number */
,
0
);
/* Door number */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
close
(
file
);
}
else
if
(
type
==
XTRN_PCBOARD
)
{
/* PCBoard Files */
sprintf
(
str
,
"%sPCBOARD.SYS"
,
dropdir
);
strcpy
(
tmp
,
"PCBOARD.SYS"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
);
return
;
...
...
@@ -931,7 +1002,10 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
close
(
file
);
/* End of PCBOARD.SYS creation */
sprintf
(
str
,
"%sUSERS.SYS"
,
dropdir
);
strcpy
(
tmp
,
"USERS.SYS"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
);
return
;
...
...
@@ -1030,7 +1104,10 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
}
else
if
(
type
==
XTRN_SPITFIRE
)
{
/* SpitFire SFDOORS.DAT File */
sprintf
(
str
,
"%sSFDOORS.DAT"
,
dropdir
);
strcpy
(
tmp
,
"SFDOORS.DAT"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
);
return
;
...
...
@@ -1058,6 +1135,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
tleft
/
60
/* Time left in minutes */
,
l
/* Seconds since midnight (now) */
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
tm
=
localtime
(
&
logontime
);
...
...
@@ -1095,13 +1173,17 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
useron
.
phone
/* Phone Number */
,
useron
.
location
/* City, State */
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
close
(
file
);
}
else
if
(
type
==
XTRN_UTI
)
{
/* UTI v2.1 - UTIDOOR.TXT */
sprintf
(
str
,
"%sUTIDOOR.TXT"
,
dropdir
);
strcpy
(
tmp
,
"UTIDOOR.TXT"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
);
return
;
...
...
@@ -1115,13 +1197,17 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
online
==
ON_LOCAL
?
0
:
cfg
.
com_port
/* COM Port */
,
dte_rate
/* DTE rate */
,
tleft
);
/* Time left in sec */
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
close
(
file
);
}
else
if
(
type
==
XTRN_SR
)
{
/* Solar Realms DOORFILE.SR */
sprintf
(
str
,
"%sDOORFILE.SR"
,
dropdir
);
strcpy
(
tmp
,
"DOORFILE.SR"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
);
return
;
...
...
@@ -1136,12 +1222,16 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
online
==
ON_LOCAL
?
0
:
cfg
.
com_port
/* COM port */
,
tleft
/
60
/* Time left (in minutes) */
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
close
(
file
);
}
else
if
(
type
==
XTRN_TRIBBS
)
{
/* TRIBBS.SYS */
sprintf
(
str
,
"%sTRIBBS.SYS"
,
dropdir
);
strcpy
(
tmp
,
"TRIBBS.SYS"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
);
return
;
...
...
@@ -1159,6 +1249,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
useron
.
location
/* User's city and state */
,
useron
.
birth
/* User's birth date */
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
sprintf
(
str
,
"%u
\n
%u
\n
%lu
\n
%lu
\n
%c
\n
%c
\n
%s
\n
%s
\n
%s
\n
"
...
...
@@ -1172,12 +1263,16 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
cfg
.
sys_op
/* Sysop's name */
,
useron
.
handle
/* User's alias */
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
close
(
file
);
}
else
if
(
type
==
XTRN_DOOR32
)
{
/* DOOR32.SYS */
sprintf
(
str
,
"%sDOOR32.SYS"
,
dropdir
);
strcpy
(
tmp
,
"DOOR32.SYS"
);
if
(
misc
&
XTRN_LWRCASE
)
strlwr
(
tmp
);
sprintf
(
str
,
"%s%s"
,
dropdir
,
tmp
);
if
((
file
=
nopen
(
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
))
==-
1
)
{
errormsg
(
WHERE
,
ERR_OPEN
,
str
,
O_WRONLY
|
O_CREAT
|
O_TRUNC
|
O_TEXT
);
return
;
...
...
@@ -1199,6 +1294,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
,
timeleft
/
60
,
useron
.
misc
&
ANSI
?
1
:
0
,
cfg
.
node_num
);
lfexpand
(
str
,
misc
);
write
(
file
,
str
,
strlen
(
str
));
close
(
file
);
}
...
...
@@ -1225,6 +1321,7 @@ void sbbs_t::moduserdat(uint xtrnnum)
if
(
cfg
.
xtrn
[
xtrnnum
]
->
type
==
XTRN_RBBS
||
cfg
.
xtrn
[
xtrnnum
]
->
type
==
XTRN_RBBS1
)
{
sprintf
(
path
,
"%sEXITINFO.BBS"
,
cfg
.
xtrn
[
xtrnnum
]
->
misc
&
STARTUPDIR
?
startup
:
cfg
.
node_dir
);
fexistcase
(
path
);
if
((
file
=
nopen
(
path
,
O_RDONLY
))
!=-
1
)
{
lseek
(
file
,
361
,
SEEK_SET
);
read
(
file
,
&
useron
.
flags1
,
4
);
/* Flags */
...
...
@@ -1243,6 +1340,7 @@ void sbbs_t::moduserdat(uint xtrnnum)
else
if
(
cfg
.
xtrn
[
xtrnnum
]
->
type
==
XTRN_GAP
)
{
sprintf
(
path
,
"%sDOOR.SYS"
,
cfg
.
xtrn
[
xtrnnum
]
->
misc
&
STARTUPDIR
?
startup
:
cfg
.
node_dir
);
fexistcase
(
path
);
if
((
stream
=
fopen
(
path
,
"rb"
))
!=
NULL
)
{
for
(
i
=
0
;
i
<
15
;
i
++
)
/* skip first 14 lines */
if
(
!
fgets
(
str
,
128
,
stream
))
...
...
@@ -1310,6 +1408,7 @@ void sbbs_t::moduserdat(uint xtrnnum)
else
if
(
cfg
.
xtrn
[
xtrnnum
]
->
type
==
XTRN_PCBOARD
)
{
sprintf
(
path
,
"%sUSERS.SYS"
,
cfg
.
xtrn
[
xtrnnum
]
->
misc
&
STARTUPDIR
?
startup
:
cfg
.
node_dir
);
fexistcase
(
path
);
if
((
file
=
nopen
(
path
,
O_RDONLY
))
!=-
1
)
{
lseek
(
file
,
39
,
SEEK_SET
);
read
(
file
,
&
c
,
1
);
...
...
@@ -1332,6 +1431,7 @@ void sbbs_t::moduserdat(uint xtrnnum)
sprintf
(
path
,
"%sMODUSER.DAT"
,
cfg
.
xtrn
[
xtrnnum
]
->
misc
&
STARTUPDIR
?
startup
:
cfg
.
node_dir
);
fexistcase
(
path
);
if
((
stream
=
fopen
(
path
,
"rb"
))
!=
NULL
)
{
/* File exists */
if
(
fgets
(
str
,
81
,
stream
)
&&
(
mod
=
atol
(
str
))
!=
0
)
{
ultoac
(
mod
>
0L
?
mod
:
-
mod
,
tmp
);
/* put commas in the # */
...
...
@@ -1451,7 +1551,7 @@ void sbbs_t::moduserdat(uint xtrnnum)
/****************************************************************************/
bool
sbbs_t
::
exec_xtrn
(
uint
xtrnnum
)
{
char
str
[
256
],
path
[
256
],
dropdir
[
128
],
name
[
32
],
c
;
char
str
[
256
],
path
[
MAX_PATH
+
1
],
dropdir
[
MAX_PATH
+
1
],
name
[
32
],
c
;
int
file
;
uint
i
;
long
tleft
,
mode
;
...
...
@@ -1503,40 +1603,43 @@ bool sbbs_t::exec_xtrn(uint xtrnnum)
switch
(
cfg
.
xtrn
[
xtrnnum
]
->
type
)
{
case
XTRN_WWIV
:
strc
at
(
path
,
"CHAIN.TXT"
);
strc
py
(
name
,
"CHAIN.TXT"
);
break
;
case
XTRN_GAP
:
strc
at
(
path
,
"DOOR.SYS"
);
strc
py
(
name
,
"DOOR.SYS"
);
break
;
case
XTRN_RBBS
:
sprintf
(
str
,
"DORINFO%X.DEF"
,
cfg
.
node_num
);
strc
at
(
path
,
str
);
strc
py
(
name
,
str
);
break
;
case
XTRN_RBBS1
:
strc
at
(
path
,
"DORINFO1.DEF"
);
strc
py
(
name
,
"DORINFO1.DEF"
);
break
;
case
XTRN_WILDCAT
:
strc
at
(
path
,
"CALLINFO.BBS"
);
strc
py
(
name
,
"CALLINFO.BBS"
);
break
;
case
XTRN_PCBOARD
:
strc
at
(
path
,
"PCBOARD.SYS"
);
strc
py
(
name
,
"PCBOARD.SYS"
);
break
;
case
XTRN_UTI
:
strc
at
(
path
,
"UTIDOOR.TXT"
);
strc
py
(
name
,
"UTIDOOR.TXT"
);
break
;
case
XTRN_SR
:
strc
at
(
path
,
"DOORFILE.SR"
);
strc
py
(
name
,
"DOORFILE.SR"
);
break
;
case
XTRN_TRIBBS
:
strc
at
(
path
,
"TRIBBS.SYS"
);
strc
py
(
name
,
"TRIBBS.SYS"
);
break
;
case
XTRN_DOOR32
:
strc
at
(
path
,
"DOOR32.SYS"
);
strc
py
(
name
,
"DOOR32.SYS"
);
break
;
default:
strc
at
(
path
,
"XTRN.DAT"
);
strc
py
(
name
,
"XTRN.DAT"
);
break
;
}
if
(
cfg
.
xtrn
[
xtrnnum
]
->
misc
&
XTRN_LWRCASE
)
strlwr
(
name
);
strcat
(
path
,
name
);
getnodedat
(
cfg
.
node_num
,
&
thisnode
,
1
);
thisnode
.
aux
=
xtrnnum
+
1
;
thisnode
.
action
=
NODE_XTRN
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment