2002-02-02 04:17:29 +05:30
|
|
|
/*
|
|
|
|
Some output conversion routines for libproc
|
|
|
|
Copyright (C) 1996, Charles Blake. See COPYING for details.
|
|
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <ctype.h>
|
|
|
|
#include <string.h>
|
2002-10-10 05:31:37 +05:30
|
|
|
#include "procps.h"
|
2002-02-02 04:17:29 +05:30
|
|
|
|
2002-11-25 15:46:33 +05:30
|
|
|
#if 0
|
2002-02-02 04:17:29 +05:30
|
|
|
/* output a string, converting unprintables to octal as we go, and stopping after
|
|
|
|
processing max chars of output (accounting for expansion due to octal rep).
|
|
|
|
*/
|
2002-11-25 15:46:33 +05:30
|
|
|
unsigned print_str(FILE *restrict file, const char *restrict const s, unsigned max) {
|
|
|
|
unsigned i;
|
2002-02-02 04:17:29 +05:30
|
|
|
for (i=0; s[i] && i < max; i++)
|
|
|
|
if (isprint(s[i]) || s[i] == ' ')
|
|
|
|
fputc(s[i], file);
|
|
|
|
else {
|
2002-11-25 15:46:33 +05:30
|
|
|
if (max > i+3) {
|
2002-10-09 00:15:19 +05:30
|
|
|
fprintf(file, "\\%03o", (unsigned char)s[i]);
|
2002-02-02 04:17:29 +05:30
|
|
|
i += 3; /* 4 printed, but i counts one */
|
|
|
|
} else
|
|
|
|
return max - i;
|
|
|
|
}
|
|
|
|
return max - i;
|
|
|
|
}
|
2002-11-25 15:46:33 +05:30
|
|
|
#endif
|
2002-02-02 04:17:29 +05:30
|
|
|
|
|
|
|
/* output an argv style NULL-terminated string list, converting unprintables
|
|
|
|
to octal as we go, separating items of the list by 'sep' and stopping after
|
|
|
|
processing max chars of output (accounting for expansion due to octal rep).
|
|
|
|
*/
|
2002-11-25 15:46:33 +05:30
|
|
|
unsigned print_strlist(FILE *restrict file, const char *restrict const *restrict strs, unsigned max) {
|
|
|
|
unsigned i, n;
|
2002-02-02 04:17:29 +05:30
|
|
|
for (n=0; *strs && n < max; strs++) {
|
|
|
|
for (i=0; strs[0][i] && n+i < max; i++)
|
|
|
|
if (isprint(strs[0][i]) || strs[0][i] == ' ')
|
|
|
|
fputc(strs[0][i], file);
|
|
|
|
else {
|
2002-11-25 15:46:33 +05:30
|
|
|
if (max > n+i+3) {
|
2002-10-09 00:15:19 +05:30
|
|
|
fprintf(file, "\\%03o", (unsigned char)strs[0][i]);
|
2002-02-02 04:17:29 +05:30
|
|
|
n += 3; /* 4 printed, but i counts one */
|
|
|
|
} else
|
|
|
|
return max - n;
|
|
|
|
}
|
|
|
|
n += i;
|
2002-10-12 09:55:57 +05:30
|
|
|
if (n + 1 < max) {
|
|
|
|
fputc(' ', file);
|
|
|
|
n++;
|
2002-02-02 04:17:29 +05:30
|
|
|
} else
|
|
|
|
return max - n;
|
|
|
|
}
|
|
|
|
return max - n;
|
|
|
|
}
|