annotate lib-src/leditcfns.c @ 4329:d9eb5ea14f65

Provide %b in #'format; use it for converting between ints and bit vectors. lisp/ChangeLog addition: 2007-12-17 Aidan Kehoe <kehoea@parhasard.net> * subr.el (integer-to-bit-vector): New. * subr.el (bit-vector-to-integer): New. Provide naive implementations using the Lisp reader for these. src/ChangeLog addition: 2007-12-17 Aidan Kehoe <kehoea@parhasard.net> * doprnt.c (emacs_doprnt_1): Add support for formatted printing of both longs and bignums as base 2. * editfns.c (Fformat): Document the new %b escape for #'format. * lisp.h: Make ulong_to_bit_string available beside long_to_string. * lread.c: Fix a bug where the integer base was being ignored in certain contexts; thank you Sebastian Freundt. This is necessary for correct behaviour of #'integer-to-bit-vector and #'bit-vector-to-integer, just added to subr.el * print.c (ulong_to_bit_string): New. Analagous to long_to_string, but used all the time when %b is encountered, since we can't pass that to sprintf. man/ChangeLog addition: 2007-12-17 Aidan Kehoe <kehoea@parhasard.net> * lispref/strings.texi (Formatting Strings): Document %b for binary output.
author Aidan Kehoe <kehoea@parhasard.net>
date Mon, 17 Dec 2007 08:44:14 +0100
parents 376386a54a3c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 /* Synched up with: FSF 19.28. */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 #include <sgtty.h>
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 #include <signal.h>
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 #define STRLEN 100
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 static char str[STRLEN+1] = "%?emacs"; /* extra char for the null */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 switch_to_proc(){
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 char *ptr = str;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10 while (*ptr) ioctl(0, TIOCSTI, ptr++);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 ioctl(0, TIOCSTI, "\n");
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 kill(getpid(), SIGTSTP);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 set_proc_str(ptr) char *ptr; {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 if (strlen(ptr) <= STRLEN)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 strcpy(str, ptr);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 else
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 printf("string too long for set-proc-str: %s\n", ptr);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 }