7 static char *bufs
[256];
8 static int lnmode
[256];
10 static char *reg_getraw(int c
, int *ln
)
17 char *reg_get(int c
, int *lnmode
)
20 static char linno
[16];
21 static char colno
[16];
25 char *s
= lbuf_get(xb
, xrow
);
26 snprintf(ln
, sizeof(ln
), "%s", s
? s
: "");
27 if (strchr(ln
, '\n') != NULL
)
28 *strchr(ln
, '\n') = '\0';
34 snprintf(linno
, sizeof(linno
), "%d", xrow
+ 1);
38 snprintf(colno
, sizeof(colno
), "%d", xoff
+ 1);
41 return reg_getraw(c
, lnmode
);
44 static void reg_putraw(int c
, char *s
, int ln
)
46 char *pre
= isupper(c
) && bufs
[tolower(c
)] ? bufs
[tolower(c
)] : "";
47 char *buf
= malloc(strlen(pre
) + strlen(s
) + 1);
50 free(bufs
[tolower(c
)]);
51 bufs
[tolower(c
)] = buf
;
52 lnmode
[tolower(c
)] = ln
;
55 void reg_put(int c
, char *s
, int ln
)
59 if ((ln
|| strchr(s
, '\n')) && (!c
|| isalpha(c
))) {
60 for (i
= 8; i
> 0; i
--)
61 if ((i_s
= reg_get('0' + i
, &i_ln
)))
62 reg_putraw('0' + i
+ 1, i_s
, i_ln
);
63 reg_putraw('1', s
, ln
);
71 for (i
= 0; i
< LEN(bufs
); i
++)