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)))