mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
More files.
More files.
This commit is contained in:
parent
a27e20579c
commit
70bcc7804e
5 changed files with 1561 additions and 0 deletions
17
include/ar.h
Normal file
17
include/ar.h
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#define ARMAG "!<arch>\n"
|
||||||
|
#define SARMAG 8
|
||||||
|
|
||||||
|
#define ARFMAG "`\n"
|
||||||
|
#define SARNAME 16
|
||||||
|
|
||||||
|
struct ar_hdr
|
||||||
|
{
|
||||||
|
char name[SARNAME];
|
||||||
|
char date[12];
|
||||||
|
char uid[6];
|
||||||
|
char gid[6];
|
||||||
|
char mode[8];
|
||||||
|
char size[10];
|
||||||
|
char fmag[2];
|
||||||
|
};
|
||||||
|
#define SAR_HDR (SARNAME+44)
|
1447
src/cmd/9sed.c
Normal file
1447
src/cmd/9sed.c
Normal file
File diff suppressed because it is too large
Load diff
13
src/lib9/get9root.c
Normal file
13
src/lib9/get9root.c
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#include <u.h>
|
||||||
|
#include <libc.h>
|
||||||
|
|
||||||
|
char*
|
||||||
|
get9root(void)
|
||||||
|
{
|
||||||
|
char *s;
|
||||||
|
|
||||||
|
if((s = getenv("PLAN9")) != 0)
|
||||||
|
return s;
|
||||||
|
return "/usr/local/plan9";
|
||||||
|
}
|
||||||
|
|
44
src/lib9/unsharp.c
Normal file
44
src/lib9/unsharp.c
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
#include <u.h>
|
||||||
|
#include <libc.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* I don't want too many of these,
|
||||||
|
* but the ones we have are just too useful.
|
||||||
|
*/
|
||||||
|
static struct {
|
||||||
|
char *old;
|
||||||
|
char *new;
|
||||||
|
} replace[] = {
|
||||||
|
"#9", nil, /* must be first */
|
||||||
|
"#d", "/dev/fd",
|
||||||
|
};
|
||||||
|
|
||||||
|
char*
|
||||||
|
unsharp(char *old)
|
||||||
|
{
|
||||||
|
char *new;
|
||||||
|
int i, olen, nlen, len;
|
||||||
|
|
||||||
|
if(replace[0].new == nil)
|
||||||
|
replace[0].new = get9root();
|
||||||
|
|
||||||
|
for(i=0; i<nelem(replace); i++){
|
||||||
|
if(!replace[i].new)
|
||||||
|
continue;
|
||||||
|
olen = strlen(replace[i].old);
|
||||||
|
if(strncmp(old, replace[i].old, olen) != 0
|
||||||
|
|| (old[olen] != '\0' && old[olen] != '/'))
|
||||||
|
continue;
|
||||||
|
nlen = strlen(replace[i].new);
|
||||||
|
len = strlen(old)+nlen-olen;
|
||||||
|
new = malloc(len+1);
|
||||||
|
if(new == nil)
|
||||||
|
/* Most callers won't check the return value... */
|
||||||
|
sysfatal("out of memory translating %s to %s%s", old, replace[i].new, old+olen);
|
||||||
|
strcpy(new, replace[i].new);
|
||||||
|
strcpy(new+nlen, old+olen);
|
||||||
|
assert(strlen(new) == len);
|
||||||
|
return new;
|
||||||
|
}
|
||||||
|
return old;
|
||||||
|
}
|
40
src/libventi/parsescore.c
Normal file
40
src/libventi/parsescore.c
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
#include <u.h>
|
||||||
|
#include <libc.h>
|
||||||
|
#include <venti.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
vtparsescore(char *s, char **prefix, uchar score[VtScoreSize])
|
||||||
|
{
|
||||||
|
int i, c;
|
||||||
|
char *buf, *colon;
|
||||||
|
|
||||||
|
if((colon = strchr(s, ':')) != nil)
|
||||||
|
buf = colon+1;
|
||||||
|
else
|
||||||
|
buf = s;
|
||||||
|
|
||||||
|
if(strlen(buf) != 2*VtScoreSize)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
memset(score, 0, VtScoreSize);
|
||||||
|
for(i=0; i<2*VtScoreSize; i++){
|
||||||
|
if(buf[i] >= '0' && buf[i] <= '9')
|
||||||
|
c = buf[i] - '0';
|
||||||
|
else if(buf[i] >= 'a' && buf[i] <= 'z')
|
||||||
|
c = buf[i] - 'a' + 10;
|
||||||
|
else if(buf[i] >= 'A' && buf[i] <= 'Z')
|
||||||
|
c = buf[i] - 'A' + 10;
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if((i & 1) == 0)
|
||||||
|
c <<= 4;
|
||||||
|
score[i>>1] |= c;
|
||||||
|
}
|
||||||
|
if(colon){
|
||||||
|
*colon = 0;
|
||||||
|
*prefix = s;
|
||||||
|
}else
|
||||||
|
*prefix = nil;
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in a new issue