/*
* more regrettable, goofy processing
*/
#include "imap4d.h"
char tab[0x7f] = {
['\t'] '0',
[' '] '#',
['#'] '1',
};
char itab[0x7f] = {
['0'] '\t',
['#'] ' ',
['1'] '#',
};
char*
encfs(char *buf, int n, char *s)
{
char *p, c;
if(!s){
*buf = 0;
return 0;
}
if(!cistrcmp(s, "inbox"))
s = "mbox";
for(p = buf; n > 0 && (c = *s++); n--){
if(tab[c & 0x7f]){
if(n < 1)
break;
if((c = tab[c]) == 0)
break;
*p++ = '#';
}
*p++ = c;
}
*p = 0;
return buf;
}
char*
decfs(char *buf, int n, char *s)
{
char *p, c;
if(!s){
*buf = 0;
return 0;
}
if(!cistrcmp(s, "mbox"))
s = "INBOX";
for(p = buf; n > 0 && (c = *s++); n--){
if(c == '#'){
c = *s++;
if((c = itab[c]) == 0)
break;
}
*p++ = c;
}
*p = 0;
return buf;
}
/*
void
usage(void)
{
fprint(2, "usage: encfs [-d] ...\n");
exits("usage");
}
void
main(int argc, char **argv)
{
char buf[1024];
int dflag;
char *(*f)(char*, int, char*);
dflag = 0;
ARGBEGIN{
case 'd':
dflag ^= 1;
break;
default:
usage();
}ARGEND
f = encfs;
if(dflag)
f = decfs;
while(*argv){
f(buf, sizeof buf, *argv++);
print("%s\n", buf);
}
exits("");
}
*/
|