Commit 318624da authored by Deon George's avatar Deon George

Merge branch 'upstream'

parents bfc0ecac 1cbe4b35
# This file is a template, and might need editing before it works on your project.
# use the official gcc image, based on debian
# can use verions as well, like gcc:5.2
# see https://hub.docker.com/_/gcc/
image: gcc
.rules:
rules:
- changes:
- src/**/*
- 3rdp/**/*
- ctrl/text.dat
build-sbbs:
sbbs-linux:
tags: [Linux]
image: gcc
stage: build
# instead of calling g++ directly you can also use some build toolkit like make
# install the necessary build tools when needed
# before_script:
# - apt update && apt -y install make autoconf
extends: .rules
script:
- cd src/sbbs3
- make all
- make gtkutils
- make RELEASE=1 all
- make RELEASE=1 gtkutils
artifacts:
name: sbbs
name: sbbs-linux-x64
paths:
- "src/sbbs3/*.exe.release/*"
- "src/sbbs3/*.lib.release/*"
- "src/sbbs3/*/*.exe.release/*"
build-sexpots:
sexpots-linux:
tags: [Linux]
image: gcc
stage: build
# instead of calling g++ directly you can also use some build toolkit like make
# install the necessary build tools when needed
# before_script:
# - apt update && apt -y install make autoconf
extends: .rules
script:
- cd src/sexpots
- make RELEASE=1
artifacts:
name: sexpots
name: sexpots-linux-x64
paths:
- "src/sexpots/*.exe.release/*"
build-syncterm:
syncterm-linux:
tags: [Linux]
image: gcc
stage: build
# instead of calling g++ directly you can also use some build toolkit like make
# install the necessary build tools when needed
# before_script:
# - apt update && apt -y install make autoconf
extends: .rules
script:
- cd src/syncterm
- make RELEASE=1
artifacts:
name: syncterm
name: syncterm-linux-x64
paths:
- "src/syncterm/*.exe.release/*"
# run tests using the binary built before
#test:
# stage: test
# script:
# - ./runmytests.sh
sbbs-windows:
tags: [Windows]
stage: build
extends: .rules
script:
- cd src/xpdev
- make
- cd ../../src/sbbs3
- .\release.bat
- cd ctrl
- .\build.bat
- cd ../chat
- .\build.bat
- cd ../useredit
- .\build.bat
artifacts:
name: sbbs-win32
paths:
- "src/sbbs3/*.exe.release/*.exe"
- "src/sbbs3/*.dll.release/*.dll"
- "src/sbbs3/*/*.exe.release/*.exe"
- "src/sbbs3/*/*.exe"
sexpots-windows:
tags: [Windows]
stage: build
extends: .rules
script:
- cd src/sexpots
- .\release.bat
artifacts:
name: sexpots-win32
paths:
- "src/sexpots/Release/*.exe"
.syncterm-msvc:
tags: [Windows]
stage: build
extends: .rules
script:
- cd src/syncterm
- .\release.bat
artifacts:
name: syncterm-msvc
paths:
- "src/syncterm/Release/*.exe"
sbbs-freebsd:
tags: [FreeBSD]
stage: build
extends: .rules
script:
- cd src/sbbs3
- gmake RELEASE=1 all
artifacts:
name: sbbs-freebsd-amd64
paths:
- "src/sbbs3/*.exe.release/*"
- "src/sbbs3/*.lib.release/*"
- "src/sbbs3/*/*.exe.release/*"
syncterm-freebsd:
tags: [FreeBSD]
stage: build
extends: .rules
script:
- cd src/syncterm
- gmake RELEASE=1
artifacts:
name: syncterm-freebsd-amd64
paths:
- "src/syncterm/*.exe.release/*"
syncterm-windows:
tags: [FreeBSD]
stage: build
extends: .rules
script:
- cd src/syncterm
- gmake AR=mingw32-ar CC=mingw32-gcc CXX=mingw32-g++ RANLIB=mingw32-ranlib RELEASE=1 STATIC_CRYPTLIB=yes USE_SDL=1 VERBOSE=please WINDRES=mingw32-windres
artifacts:
name: syncterm-win32
paths:
- "src/syncterm/*.exe.release/*"
syncdraw-freebsd:
tags: [FreeBSD]
stage: build
extends: .rules
script:
- cd src/syncdraw
- gmake RELEASE=1
artifacts:
name: syncdraw-freebsd-amd64
paths:
- "src/syncdraw/*.exe.release/*"
syncdraw-linux:
tags: [Linux]
image: gcc
stage: build
extends: .rules
script:
- cd src/syncdraw
- make RELEASE=1
artifacts:
name: syncdraw-linux-x64
paths:
- "src/syncdraw/*.exe.release/*"
jsdoor-freebsd:
tags: [FreeBSD]
stage: build
extends: .rules
script:
- cd src/sbbs3
- gmake RELEASE=1 jsdoor
artifacts:
name: jsdoor-freebsd-amd64
paths:
- "src/sbbs3/*.exe.release/*"
jsdoor-linux:
tags: [Linux]
image: gcc
stage: build
extends: .rules
script:
- cd src/sbbs3
- make RELEASE=1 jsdoor
artifacts:
name: jsdoor-linux-x64
paths:
- "src/sbbs3/*.exe.release/*"
sexpots-freebsd:
tags: [FreeBSD]
stage: build
extends: .rules
script:
- cd src/sexpots
- gmake RELEASE=1
artifacts:
name: sexpots-freebsd-amd64
paths:
- "src/sexpots/*.exe.release/*"
jsdoor-windows:
tags: [FreeBSD]
stage: build
extends: .rules
script:
- cd src/sbbs3
- gmake AR=mingw32-ar CC=mingw32-gcc CXX=mingw32-g++ JSINCLUDE=../../3rdp/win32.release/mozjs/include/ JSLIB=mozjs JSLIBDIR=../../3rdp/win32.release/mozjs/bin/ RANLIB=mingw32-ranlib RELEASE=1 VERBOSE=please WINDRES=mingw32-windres jsdoor
artifacts:
name: jsdoor-win32
paths:
- "src/sbbs3/*.exe.release/*"
; $Id: modopts.ini,v 1.36 2020/04/18 06:21:33 rswindell Exp $
; This file contains simple JS object defintions to enable/control the optional
; behavior of various Synchronet stock and 3rd party JS modules (e.g. exec/*.js)
......@@ -24,6 +22,8 @@
qwk_settings = QWK_FILES|QWK_ATTACH|QWK_EMAIL|QWK_DELMAIL
; Set ask_sysop to true to enable Synchronet Sysop question (sets FLAG 1S)
ask_sysop = false
; Set to false to disable the "Where did you hear about this BBS?" question
survey = true
; Set new user default avatar
avatar = IH8gfyB/3H/cf9x/3H8gfyB/IH8gfyB/3n/bf9t/23/bf91/IH8gfyB/IH/ef9t/23/bf9t/3X8gfyB/IH8gf9x/23/bf9t/23/cfyB/IH8gf9t/23/bf9t/23/bf9t/238gfyB/23/bf9t/23/bf9t/23/bfyB/
; Or set the new user default avatar from an avatar collection (.bin) file:
......@@ -59,6 +59,11 @@
backup_level = 10
[xtrn_sec]
; Set to true to disable execution of prextrn.js and postxtrn.js for external programs
; when they are running as a logon event
disable_pre_on_logon_event = false
disable_post_on_logon_event = false
; Enable multi-column display (when more than 10 external programs in a section)
multicolumn = true
; Sort the list of external programs alphabetically by name
......@@ -68,8 +73,27 @@
; Auto-execute the only available program when entering a program section
autoexec = false
; Execute (evaluate) a JavaScript expression before/after executing any external programs (doors)
; eval_before_exec = alert('Running ' + prog.name);
; eval_after_exec = load('../xtrn/twitter/tweet.js', user.alias, 'ran', prog.name);
; eval_before_exec = alert('Running ' + prog.name);
; eval_after_exec = load('../xtrn/twitter/tweet.js', user.alias, 'ran', prog.name);
; uncomment and modify any of the below to change the look of the main external sections menu
; section_fmt: \1-\1g%3d:\1n\1g %s
; section_header_fmt: \1-\1gSelect \1hExternal Program Section\1-\1g:
; section_which: \r\n\1-\1gWhich, \1w\1h~Q\1n\1guit or [1]: \1h
; uncomment and modify any of the below to change the look of the external programs menu
; to remove titles or underline, set to the text ' '
; header_fmt: \1n\1c\1h%s \1n\1cExternal Programs:\r\n\r\n
; titles: \1n\1cNum \1h\xb3\1n\1c Name \1n\1c
; multicolumn_fmt: \1h\1c%3u \xb3 \1n\1c%-32.32s \1h
; singlecolumn_fmt: \1h\1c%3u \xb3 \1n\1c%s \1h
; which: \r\n\1-\1cWhich or \1h~Q\1n\1cuit: \1h
; underline: \1c\1h\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4
; to enable cost display, use these instead
; titles: \1n\1cNum \1h\xb3\1n\1c Name Cost \1n\1c
; multicolumn_fmt: \1h\1c%3u \xb3 \1n\1c%-26.26s\1h %5u
; singlecolumn_fmt: \1h\1c%3u \xb3 \1n\1c%-26.26s\1h %5u
[chat_sec]
; Over-ride default IRC server/port and channel (if desired) here:
......
......@@ -36,7 +36,7 @@
; JavaScript values can be specified here *and* in server-specific sections
; JavaScript values specified in server-specific sections will over-ride the global values
; Maximum allocation of memory per JS run-time:
JavaScriptMaxBytes = 8M
JavaScriptMaxBytes = 160M
; Maximum stack size per JS context:
JavaScriptContextStack = 16K
; Maximum number of ticks (100ms) before auto-termination of script:
......
......@@ -60,7 +60,7 @@
"\1_\r\n\1q\1g\1hMail Waiting (%s first):\r\n\r\n" 046 MailWaitingLstHdr
"\1g\1h%4d \1n\1g%-25.25s \1h%c\1n\1g %s\r\n" 047 MailWaitingLstFmt
"\1_\r\n\1y\1hStart with number [\1w%u\1y]: \1w" 048 StartWithN
"\r\n\1n\1c \1b\1hReading E-mail \1n\1c \1b\1h(\1w\1`?\1b=Menu)"\ 049 ReadingMail
"\r\n\1n\1c\xfe \1b\1hReading E-mail \1n\1c\xfe \1b\1h(\1w\1`?\1b=Menu)"\ 049 ReadingMail
" (\1w%u\1b of \1w%u\1b): \1n\1~"
"\1n\r\nYou can't reply to this message.\r\n" 050 CantReplyToMsg
" \1h\1bRe\1n\1b: \1h\1c%s\1n\r\n\r\n" 051 Regarding
......@@ -77,12 +77,12 @@
"\1n\r\nYou have no sent messages pending.\r\n" 059 NoMailSent
"\r\n\1q\1g\1hMail that you've sent still pending (%s first):"\ 060 MailSentLstHdr
"\r\n\r\n\1n"
"\1n\r\n\1c \1h\1bReading Sent E-mail \1n\1c \1h\1b"\ 061 ReadingSentMail
"\1n\r\n\1c\xfe \1h\1bReading Sent E-mail \1n\1c\xfe \1h\1b"\ 061 ReadingSentMail
"(\1w\1`?\1b=Menu) (\1w%u\1b of \1w%u\1b): \1n\1~"
"\1h\1?\1mInternet Mail To: \1w%s\1m\r\n"\ 062 InternetMailing
" From: \1w%s\r\n"
"\1n\r\nNo mail on system.\r\n" 063 NoMailOnSystem
"\1n\r\n\1c \1h\1bReading All E-mail \1n\1c \1h\1b"\ 064 ReadingAllMail
"\1n\r\n\1c\xfe \1h\1bReading All E-mail \1n\1c\xfe \1h\1b"\ 064 ReadingAllMail
"(\1w%u \1bof \1w%u\1b): \1n"
"\1_\r\n\1g\1h From "\ 065 MailOnSystemLstHdr
"To A Subject\r\n\1n"
......@@ -92,7 +92,7 @@
"\1-\r\n\1c%-20s \1y\1h%-50s \1w%6u" 068 SearchSubFmt
"\r\nNo messages have been posted on %s %s\r\n" 069 NoMsgsOnSub
"\r\n\1n\1cPost : [\1h%u\1n\1c][\1h%u\1n\1c] \1h%u\1n\1c/\1h%u" 070 ZScanPostHdr
"\1n\r\n\1c \1h\1bReading \1n\1c %4u\b\b\b\b%s\1\\"\ 071 ReadingSub
"\1n\r\n\1c\xfe \1h\1bReading \1n\1c\xfe %4u\b\b\b\b%s\1\\"\ 071 ReadingSub
" %4u\b\b\b\b\1h%s \1n\1c(\1h\1`?\1n\1c=Menu) (\1h%u\1n\1c of \1h%u\1n\1c): \1n\1~"
"\r\nYou didn't post message #%d\r\n" 072 YouDidntPostMsgN
"\1?Delete message #%u '%s'" 073 DeletePostQ
......@@ -100,15 +100,15 @@
"\1n\1b: \1c%s\r\n"
"\1n\r\n\1m%s sent to \1h%s #%u\r\n" 075 MsgSentToUser
"\1_\r\n\1y\1hText to search for: " 076 SearchStringPrompt
"\1w\1h\xc4\xc4\xc4\xc4\xc4[\1i\1r%c\1n\1h]\xc4\xc4\xc4\xc4 "\ 077 PrivateChatSeparator
"\1w\1h\xc4\xc4\xc4\xc4\xc4[\1i\1r%c\1n\1h]\xc4\xc4\xc4\xc4\xb4 "\ 077 PrivateChatSeparator
"\1yPrivate Chat - \1rCtrl-C to Quit \1y- "\
"Time Left: \1g%-8s\1w"\
" \xc4\xc4\xc4\xc4[\1i\1b%c\1n\1h]\xc4\xc4\xc4\xc4\xc4"
" \xc3\xc4\xc4\xc4\xc4[\1i\1b%c\1n\1h]\xc4\xc4\xc4\xc4\xc4"
"\1g\1h%5u\1n\1g %-22.22s %-22.22s \1h%c\1n\1g %s\r\n" 078 SubMsgLstFmt
"\1w\1h\xc4\xc4\xc4\xc4\xc4[\1i\1r%c\1n\1h]\xc4\xc4\xc4\xc4 "\ 079 SysopChatSeparator
"\1w\1h\xc4\xc4\xc4\xc4\xc4[\1i\1r%c\1n\1h]\xc4\xc4\xc4\xc4\xb4 "\ 079 SysopChatSeparator
"\1rSplit-Screen \1cSysop\1r Chat \1y"\
"Time Left: \1g%-8s\1w"\
" \xc4\xc4\xc4\xc4[\1i\1b%c\1n\1h]\xc4\xc4\xc4\xc4\xc4"
" \xc3\xc4\xc4\xc4\xc4[\1i\1b%c\1n\1h]\xc4\xc4\xc4\xc4\xc4"
"\r\n\r\nNo text file sections available.\r\n" 080 NoTextSections
"\1l\1_\1c\1hGeneral Text File Sections:\r\n\r\n" 081 TextSectionLstHdr
"\1n\1c<\1h%d\1n\1c> %s\r\n" 082 TextSectionLstFmt
......@@ -422,7 +422,7 @@
"\1bUser #\1c%-4d \1b: \1c%s\r\n" 351 LiUserNumberName
"\1bLogons Today : \1c%-5u \1b(Max \1c%u\1b)\r\n" 352 LiLogonsToday
"\1bTime on Today : \1c%-5u \1b(Max \1c%u\1b)\r\n" 353 LiTimeonToday
"\1bMail Waiting : \1c%u\r\n" 354 LiMailWaiting
"\1bMail Waiting : \1c%-5u \1b(Unread \1c%u\1b)\r\n" 354 LiMailWaiting
"\1b\1hSysop is : \1c%s\r\n" 355 LiSysopIs
"Available" 356 LiSysopAvailable
"Not Available" 357 LiSysopNotAvailable
......@@ -462,7 +462,7 @@
"\r\n\r\nNo external programs available.\r\n" 379 NoXtrnPrograms
"\1n\1c\1h%s \1n\1cExternal Programs:\r\n\r\n" 380 XtrnProgLstHdr
"\1n\1cNum \1h\xb3\1n\1c Name " 381 XtrnProgLstTitles
"\1h\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4"\ 382 XtrnProgLstUnderline
"\1h\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4"\ 382 XtrnProgLstUnderline
"\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4"\
"\xc4\xc4\xc4\xc4\xc4\xc4 "
"\1h\1c%3u \xb3 \1n\1c%-32.32s\1h " 383 XtrnProgLstFmt
......@@ -505,8 +505,8 @@
"Amiga" 416 ComputerTypeD
"Other" 417 ComputerTypeE
"\7\r\nNo user data defined.\r\n" 418 NoUserData
"\1r\1h \1iDELETED\1n\1r\1h \r\n" 419 Deleted
"\1b\1h \1iINACTIVE\1n\1b\1h \r\n" 420 Inactive
"\1r\1h\xAE\xAE\xAE \1iDELETED\1n\1r\1h \xAF\xAF\xAF\r\n" 419 Deleted
"\1b\1h\xAE\xAE\xAE \1iINACTIVE\1n\1b\1h \xAF\xAF\xAF\r\n" 420 Inactive
"\1n\1cAlias : \1h%-30.30s \1n\1cPassword : "\ 421 UeditAliasPassword
"\1h%-8.8s %s\r\n"
"\1n\1cReal Name : \1h%-30.30s \1n\1cPhone number : "\ 422 UeditRealNamePhone
......
No preview for this file type
......@@ -11,7 +11,7 @@ function automsg()
{
const quote_fmt=" > %.*s\r\n";
var automsg = system.data_dir + "msgs/auto.msg";
while(bbs.online && !js.termiated) {
while(bbs.online && !js.termiated && !console.aborted) {
bbs.nodesync();
console.mnemonics(bbs.text(AutoMsg));
switch(console.getkeys("RWQD",0)) {
......@@ -20,7 +20,7 @@ function automsg()
break;
case 'W':
if(user.security.restrictions&UFLAG_W) {
console.print(bbs.text[R_AutoMsg]);
console.print(bbs.text(R_AutoMsg));
break;
}
bbs.action=NODE_AMSG;
......
// $Id: badpasswords.js,v 1.3 2019/01/11 09:38:12 rswindell Exp $
"use strict";
require("sbbsdefs.js", 'USER_DELETED');
var badpasswords=0;
var usr = new User;
var lastuser = system.lastuser;
for(var u=1; u <= lastuser; u++) {
usr.number = u;
if(usr == null)
continue;
if(usr.settings&(USER_DELETED|USER_INACTIVE))
continue;
if(!system.trashcan("password",usr.security.password))
continue;
printf("%-25s: %s\r\n", usr.alias, usr.security.password);
badpasswords++;
}
printf("%u bad passwords found\n", badpasswords);
\ No newline at end of file
require('sbbsdefs.js', 'LEN_ALIAS');
var month = argv[0];
var day = argv[1];
if(month === undefined)
month = new Date().getMonth();
var list = load({}, "birthdays.js", month, day);
var monthNameList = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
if(js.global.console) console.attributes = HIGH;
print(format("%u %s users with birthdays in %s:", list.length, system.name, monthNameList[month]));
for(var i = 0; i < list.length; i++) {
if(js.global.console) console.attributes = HIGH | ((i&1) ? CYAN : MAGENTA);
var u = User(list[i]);
var str = format("%-*s ", LEN_ALIAS, u.alias);
if((js.global.console && console.current_column + str.length > console.screen_columns) || (!js.global.console && i > 0 && i % 3 == 0))
print();
write(str);
}
print();
......@@ -324,7 +324,7 @@ function main() {
scrollbar.cycle();
var user_input;
while ((user_input = console.getkey(K_NONE).toLowerCase()) != 'q') {
while ((user_input = console.getkey(K_NOSPIN).toLowerCase()) != 'q') {
if (user_input == 's') {
search(frame, settings);
} else {
......
......@@ -537,7 +537,7 @@ write("\r\n");
write(format("From: %-36s Handle: %s\r\n", options.include_location ? u.location : "undisclosed" ,u.handle));
if(options.include_age)
write(format("%-42s ", format("Birth: %s (Age: %u years)" , u.birthdate,u.age)));
write(format("%-42s ", format("Age: %u years" , u.age)));
if(options.include_gender)
write(format("Gender: %s", u.gender));
if(options.include_age || options.include_gender)
......
......@@ -443,6 +443,14 @@ for (var i = 0; i < argc; i++) {
ini_list.push(argv[i]);
}
if(!ini_list.length) {
var lib = load({}, "install-3rdp-xtrn.js");
var out = lib.scan(options);
for (var i in out) {
print(out[i]);
}
}
function find_startup_dir(dir)
{
for (var i in xtrn_area.prog) {
......
......@@ -53,23 +53,28 @@ function verstr(ver)
return str;
}
function document_methods(name,obj)
function document_methods(name,obj,type)
{
var method;
var func;
if(type === undefined)
type="object";
var l = (name + " " + type).replace(/\s+/g, '_');
if(obj._method_list == undefined)
return;
f.writeln(li_tag);
f.writeln("<a href=#" + name +"_methods>methods</a>");
f.writeln("<a href=#" + l +"_methods>methods</a>");
table_close();
table_open(name);
docwriteln("<caption align=left><b><tt>" + name + "</tt>");
docwriteln("<a name=" + name + "_methods> methods</a>");
docwriteln("<a name=" + l + "_methods> methods</a>");
docwriteln("</b></caption>");
docwriteln("<tr bgcolor=gray>");
docwriteln("<th align=left width=100>");
......@@ -112,17 +117,19 @@ function document_methods(name,obj)
function object_header(name, obj, type)
{
if(type==undefined)
if(type === undefined)
type="object";
var l = (name + " " + type).replace(/\s+/g, '_');
f.writeln(li_tag);
if(!object_depth)
f.write("[+] &nbsp");
f.writeln(name.bold().link("#"+name) + " " + type);
f.writeln(name.bold().link("#"+l) + " " + type);
if(table_depth)
table_close();
docwriteln("<h2><a name=" + name + ">" + name + " " + type + "</a>");
docwriteln("<h2><a name=" + l + ">" + name + " " + type + "</a>");
if(obj._description!=undefined)
docwriteln("<br><font size=-1>"+obj._description+"</font>");
if(!min_ver && obj._ver>310)
......@@ -132,11 +139,13 @@ function object_header(name, obj, type)
docwriteln("<p>" + obj._constructor + "</p>");
}
function properties_header(name, obj)
function properties_header(name, obj, type)
{
if (type === undefined)
type = 'object';
var l = (name + " " + type).replace(/\s+/g, '_');
f.writeln(li_tag);
f.writeln("<a href=#" + name +"_properties>properties</a>");
f.writeln("<a href=#" + l +"_properties>properties</a>");
table_close();
if(obj._method_list != undefined)
......@@ -144,7 +153,7 @@ function properties_header(name, obj)
table_open(name);
docwriteln("<caption align=left><b><tt>" + name + "</tt>");
docwriteln("<a name=" + name + "_properties> properties</a>");
docwriteln("<a name=" + l + "_properties> properties</a>");
docwriteln("</b></caption>");
docwriteln("<tr bgcolor=gray>");
docwriteln("<th align=left width=100>");
......@@ -159,7 +168,7 @@ function properties_header(name, obj)
docwriteln("Description".fontcolor("white"));
}
function document_properties(name, obj)
function document_properties(name, obj, type)
{
var prop_name;
var count=0;
......@@ -168,6 +177,8 @@ function document_properties(name, obj)
var prop_hdr=false;
var p;
if (type === undefined)
type = typeof(obj);
p=0;
for(prop in obj) {
prop_num=count++;
......@@ -235,9 +246,13 @@ function document_object(name, obj, type)
break;
}
f.writeln("<ul>");
document_methods(name,obj);
document_methods(name,obj,type);
object_depth++;
document_properties(name,obj);
document_properties(name,obj,type);
if (type === 'class') {
if (Object.keys(js.global[obj.constructor.name]).length > 0)
document_object(obj.constructor.name, js.global[obj.constructor.name], "class object");
}
object_depth--;
f.writeln("</ul>");
table_close();
......@@ -333,6 +348,11 @@ if(js.global.COM != undefined) {
com.close();
if(com != undefined) document_object("COM" ,com, "class");
}
if(js.global.conio != undefined) {
document_object("conio",js.global.conio);
}
if(js.global.uifc != undefined) document_object("uifc" ,uifc);
if(js.global.CryptContext != undefined) {
var cc = new CryptContext(CryptContext.ALGO.AES);
if(cc != undefined) document_object("CryptContext",cc, "class");
......@@ -341,11 +361,12 @@ if(js.global.CryptKeyset != undefined) {
var cks = new CryptKeyset(system.temp_dir + "tmpkeyset", CryptKeyset.KEYOPT.CREATE);
if(cks != undefined) document_object("CryptKeyset",cks, "class");
}
if(js.global.conio != undefined) {
document_object("conio",js.global.conio);
if(js.global.CryptCert != undefined) {
var ccert = new CryptCert(CryptCert.TYPE.CERTIFICATE);
if(ccert != undefined) {
document_object("CryptCert",ccert, "class");
}
}
if(js.global.uifc != undefined) document_object("uifc" ,uifc);
f.writeln("</ol>");
f.write(body);
......
// $Id: birthdate.js,v 1.4 2018/06/06 21:44:23 rswindell Exp $
/*
* When this code is load()ed, User objects get an extra 'birthDate' property