Welcome to the CHICKEN Scheme pasting service
setting argv pasted by alexcharlton on Mon Oct 13 19:03:39 2014
(define (set-title str)
(receive (c v) (argc+argv)
((foreign-lambda* void ((c-string str) (c-pointer argv))
"((char**) argv)[0] = str;")
(object-evict str) v)))
setting argv that works! pasted by alexcharlton on Mon Oct 13 19:20:11 2014
(define (set-proc-title str)
(receive (c v) (argc+argv)
((foreign-lambda* void ((c-string str) (c-pointer argv))
"char *name = ((char**) argv)[0];
strncpy(name,str,strlen(name));
")
str v)))
get-proc-title pasted by alexcharlton on Mon Oct 13 19:28:35 2014
(define (get-proc-title)
(receive (c v) (argc+argv)
(print ((foreign-lambda* c-string ((c-pointer argv))
"C_return(((char**) argv)[0]);")
v))))
allow recovery of original length pasted by andyjpb on Mon Oct 13 19:30:44 2014
(define me-length (string-length (car (argv)))) (define (set-proc-title str #!optional (len (min me-length (string-length str)))) (receive (c v) (argc+argv) ((foreign-lambda* void ((c-string str) (c-pointer argv) (integer len)) "char *name = ((char**) argv)[0]; strncpy(name,str,strlen(name)); ") str v len))) (use posix) (sleep 5) (set-proc-title "hello") (sleep 100)
How about this? pasted by alexcharlton on Mon Oct 13 19:52:10 2014
(define me-length (string-length (car (argv)))) (define (set-proc-title str)) (receive (c v) (argc+argv) ((foreign-lambda* void ((c-string str) (c-pointer argv) (integer len)) "char *name = ((char**) argv)[0]; strncpy(name,str,len); ") str v me-length)))
set-proc-title working pasted by andyjpb on Mon Oct 13 20:06:01 2014
22320 pts/4 S+ 0:00 \_ ./knodium-universe --development-mode www.knodium.com 22321 pts/4 S+ 0:00 \_ proclaim --development-mode www.knodium.com 22322 pts/4 S+ 0:00 \_ https --development-mode www.knodium.com 22328 pts/4 Z+ 0:00 | \_ [knodium-univers] <defunct> 22329 pts/4 Z+ 0:00 | \_ [knodium-univers] <defunct> 22323 pts/4 S+ 0:00 \_ http --development-mode www.knodium.com 22324 pts/4 S+ 0:00 \_ pa --development-mode www.knodium.com 22325 pts/4 S+ 0:00 \_ repl --development-mode www.knodium.com
length-preserving set-proc-title added by alexcharlton on Mon Oct 13 20:39:14 2014
(define (set-proc-title str)
(print "setting proc title to " str)
(receive (c v) (argc+argv)
((foreign-lambda* void ((c-string str) (c-pointer argv))
"static int orig_len = -1;
char *name = ((char**) argv)[0];
if (orig_len == -1) orig_len = strlen(name);
strncpy(name,str,orig_len);
")
str v)))