first commit -- hello from 9p
This commit is contained in:
commit
9d81d9d6ab
5 changed files with 97 additions and 0 deletions
23
.clang-format
Normal file
23
.clang-format
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
TabWidth: 2
|
||||||
|
IndentWidth: 2
|
||||||
|
ContinuationIndentWidth: 2
|
||||||
|
UseTab: Never
|
||||||
|
AllowShortBlocksOnASingleLine: Always
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
AllowShortEnumsOnASingleLine: true
|
||||||
|
AllowShortIfStatementsOnASingleLine: false
|
||||||
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 255
|
||||||
|
IndentCaseLabels: true
|
||||||
|
SpaceBeforeParens: ControlStatements
|
||||||
|
AlignAfterOpenBracket: AlwaysBreak
|
||||||
|
BinPackArguments: false
|
||||||
|
BinPackArguments: false
|
||||||
|
PointerAlignment: Left
|
||||||
|
BreakBeforeBraces: Attach
|
||||||
|
SortIncludes: false
|
||||||
|
AllowAllArgumentsOnNextLine: false
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: false
|
||||||
|
AlignEscapedNewlines: Left
|
||||||
|
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
*.o
|
||||||
|
xrxs
|
6
build.sh
Executable file
6
build.sh
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
clang-format -i ./*.c
|
||||||
|
|
||||||
|
mk o.xrxs
|
||||||
|
mv o.xrxs xrxs
|
10
mkfile
Normal file
10
mkfile
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<$PLAN9/src/mkhdr
|
||||||
|
|
||||||
|
SHORTLIB=9p
|
||||||
|
|
||||||
|
TARG=xrxs
|
||||||
|
|
||||||
|
OFILES=\
|
||||||
|
xrxs.$O\
|
||||||
|
|
||||||
|
<$PLAN9/src/mkone
|
56
xrxs.c
Normal file
56
xrxs.c
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
#include <u.h>
|
||||||
|
#include <libc.h>
|
||||||
|
#include <fcall.h>
|
||||||
|
#include <thread.h>
|
||||||
|
#include <9p.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
/* clang-format off */
|
||||||
|
|
||||||
|
char clca(char c) { return c >= 'A' && c <= 'Z' ? c + ('a' - 'A') : c; } /* char to lowercase */
|
||||||
|
char cuca(char c) { return c >= 'a' && c <= 'z' ? c - ('a' - 'A') : c; } /* char to uppercase */
|
||||||
|
int slen(char *s) { int i = 0; while(s[i] && s[++i]) { ; } return i; } /* string length */
|
||||||
|
char *st__(char *s, char (*fn)(char)) { int i = 0; char c; while((c = s[i])) s[i++] = fn(c); return s; }
|
||||||
|
char *stuc(char *s) { return st__(s, cuca); } /* string to uppercase */
|
||||||
|
char *stlc(char *s) { return st__(s, clca); } /* string to lowercase */
|
||||||
|
char *scpy(char *src, char *dst, int len) { int i = 0; while((dst[i] = src[i]) && i < len - 2) i++; dst[i + 1] = '\0'; return dst; } /* string copy */
|
||||||
|
int scmp(char *a, char *b) { int i = 0; while(a[i] == b[i]) if(!a[i++]) return 1; return 0; } /* string compare */
|
||||||
|
char *scsw(char *s, char a, char b) { int i = 0; char c; while((c = s[i])) s[i++] = c == a ? b : c; return s; } /* string char swap */
|
||||||
|
char *scat(char *dst, const char *src) { char *ptr = dst + slen(dst); while(*src) *ptr++ = *src++; *ptr = '\0'; return dst; } /* string cat */
|
||||||
|
int ssin(char *s, char *ss) { int a = 0, b = 0; while(s[a]) { if(s[a] == ss[b]) { if(!ss[b + 1]) return a - b; b++; } else b = 0; a++; } return -1; } /* string substring index */
|
||||||
|
char *ccat(char *dst, char c) { int len = slen(dst); dst[len] = c; dst[len + 1] = '\0'; return dst; }
|
||||||
|
|
||||||
|
/* clang-format on */
|
||||||
|
|
||||||
|
void fsread(Req* r) {
|
||||||
|
static int i = 0;
|
||||||
|
char numReads[16];
|
||||||
|
i = i + 1;
|
||||||
|
sprintf(numReads, "%d reads\n", i);
|
||||||
|
readstr(r, "Hello from 9P!\n");
|
||||||
|
readstr(r, numReads);
|
||||||
|
respond(r, nil);
|
||||||
|
}
|
||||||
|
|
||||||
|
Srv fs = {
|
||||||
|
.read = fsread,
|
||||||
|
};
|
||||||
|
|
||||||
|
void threadmain(int argc, char** argv) {
|
||||||
|
Tree* tree;
|
||||||
|
char* mtpt = argv[1];
|
||||||
|
|
||||||
|
if (argc < 1)
|
||||||
|
sysfatal("supply a mountpoint");
|
||||||
|
|
||||||
|
tree = alloctree(nil, nil, DMDIR | 0555, nil);
|
||||||
|
fs.tree = tree;
|
||||||
|
fs.foreground = 1;
|
||||||
|
createfile(tree->root, "hello", nil, 0555, nil);
|
||||||
|
|
||||||
|
if (mtpt && access(mtpt, AEXIST) < 0 && access(mtpt, AEXIST) < 0)
|
||||||
|
sysfatal("mountpoint %s does not exist", mtpt);
|
||||||
|
|
||||||
|
threadpostmountsrv(&fs, nil, mtpt, MREPL | MCREATE);
|
||||||
|
threadexits(0);
|
||||||
|
}
|
Loading…
Reference in a new issue