From c4acf9641437d9f57d0e375a3550f26847594cd1 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Fri, 7 Mar 2003 04:53:46 +0000 Subject: [PATCH] Added global ctrl() method to return an ASCII control character (as a string) that represents the character string (or ASCII value) passed. Example: ctrl('C') returns '\3'. --- src/sbbs3/js_global.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c index 195caea0fa..dd04a47111 100644 --- a/src/sbbs3/js_global.c +++ b/src/sbbs3/js_global.c @@ -315,6 +315,35 @@ js_ascii(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) return(JS_TRUE); } +static JSBool +js_ctrl(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + char ch; + char* p; + char str[2]; + JSString* js_str; + + if(JSVAL_IS_STRING(argv[0])) { + + if((p=JS_GetStringBytes(JSVAL_TO_STRING(argv[0])))==NULL) + return(JS_FALSE); + ch=*p; + } else + ch=(char)JSVAL_TO_INT(argv[0]); + + ch=toupper(ch)&~0x20; + + str[0]=*p; + str[1]=0; + + if((js_str = JS_NewStringCopyZ(cx, str))==NULL) + return(JS_FALSE); + + *rval = STRING_TO_JSVAL(js_str); + return(JS_TRUE); +} + + static char* dupestr(char* str) { char* p; @@ -823,7 +852,10 @@ static jsMethodSpec js_global_functions[] = { }, {"chksum", js_chksum, 1, JSTYPE_NUMBER, JSDOCSTR("string text") ,JSDOCSTR("calculate and return 32-bit chksum of string") - }, + }, + {"ctrl", js_ctrl, 1, JSTYPE_STRING, JSDOCSTR("number or string") + ,JSDOCSTR("return ASCII control character representing character passed - Example: <tt>ctrl('C') returns '\3'</tt>") + }, {"ascii", js_ascii, 1, JSTYPE_NUMBER, JSDOCSTR("[string text] or [number value]") ,JSDOCSTR("convert string to ASCII value or vice-versa (returns number OR string)") }, -- GitLab