ref: 020e1b4876c3740befcacd48d47873453a3de663
parent: adb6ddf2966e78f5a04135decfcd8058992b8aae
author: sirjofri <sirjofri@sirjofri.de>
date: Sat Mar 29 10:48:11 EDT 2025
adds copyright notice
--- a/mapfs.c
+++ b/mapfs.c
@@ -14,6 +14,8 @@
exits("usage");
}
+char *copyright = "© OpenStreetMap Contributors (ODbL)";
+
char Ebadzoom[] = "bad zoom";
char Enofile[] = "file not found";
char Enotile[] = "invalid tile";
@@ -100,6 +102,7 @@
enum {
Qroot,
Qctl,
+ Qcopy,
Qz,
Qx,
Qy,
@@ -166,6 +169,10 @@
fid->qid = *qid = mkqid(Qctl, QTFILE);
return nil;
}
+ if (strcmp(name, "copyright") == 0) {
+ fid->qid = *qid = mkqid(Qcopy, QTFILE);
+ return nil;
+ }
i = atoi(name);
if (i < 0)
return Ebadzoom;
@@ -220,6 +227,11 @@
dir->mode = 0444;
dir->name = estrdup9p("ctl");
goto fulldefs;
+ case Qcopy:
+ dir->qid = mkqid(Qcopy, QTFILE);
+ dir->mode = 0444;
+ dir->name = estrdup9p("copyright");
+ goto fulldefs;
case Qz:
dir->qid = mkzqid(p->z);
snprint(buf, sizeof buf, "%d", p->z);
@@ -256,13 +268,17 @@
rootgen(int n, Dir *dir, void*)
{
Qpath path;
- if (n > maxzoom + 1) {
+ if (n > maxzoom + 2) {
return -1;
}
- if (n > maxzoom) {
+ if (n == maxzoom + 1) {
fillstat(Qctl, dir, nil);
return 0;
}
+ if (n == maxzoom + 2) {
+ fillstat(Qcopy, dir, nil);
+ return 0;
+ }
path.z = n;
fillstat(Qz, dir, &path);
return 0;
@@ -285,6 +301,12 @@
if (QID(r->fid->qid.path) == Qctl) {
snprint(buf, sizeof buf, "%d\n", maxzoom);
readstr(r, buf);
+ respond(r, nil);
+ return;
+ }
+
+ if (QID(r->fid->qid.path) == Qcopy) {
+ readstr(r, copyright);
respond(r, nil);
return;
}
--- a/mkfile
+++ b/mkfile
@@ -1,5 +1,6 @@
</$objtype/mkfile
+BIN=/$objtype/bin
TARG=mapfs
OFILES=\
mapfs.$O\
--
⑨