-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTODO
44 lines (33 loc) · 1.88 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Stuff that's still to-do
========================
- compile with -D_FILE_OFFSET_BITS=64 on linux.
related: this is needed only for glibc or musl too?
- (possibly related) find out what pread(2) black magic we can do to
read stuff on 32 bits portably.
- rework the ninepscript so tests are parsed and executed by the _kamid
user and not by root.
- tweak iounit so it's always lower than the choosen msize?
- fill user and group name in struct stat. The problem is that, being
chrooted, we don't have access to /etc/passwd nor /etc/group. We
could use setpassent(3) and setgroupent(3), but if they change in the
meantime we can't do anything. Another solution would be to not
to chroot(2) and just switch to the targeted user.
- design a protocol extension to avoid Y2038 issues.
- find a way to avoid opening directories twice. During a walk
we open the directories, but if later we try to open that fid,
we end up re-opening the same directory again! It's not easy
to avoid because we need to fdopendir(3) and upon closedir it'll
close the file descriptor, while the same file descriptor could
be shared with other fids (f->dir is a shared read-only resource).
One solution may be to not use readdir and roll our own on top
of getdents(2) and lseek(2), but that may not be portable.
- reply with an Rerror in kamid/listener.c:/^client_read when we get
an invalid message (too big or too small) before closing the
connection.
- how (if) handle serialize_stat overflow? If the info for the file
we want to give don't fit inside 16 bit we're currently either
skipping the file entry (if during a directory read) or return an
error (during Tstat.)
- artworks! I'd like for every release of kamid to be accompanied by a
hand-drawed artwork, so some artworks for future releases are welcome!
See the art/ directory for previous versions.