shithub: vcardfs

Download patch

ref: effe53dedb08022fc45652e44193ba43fb5fbef3
parent: cfe931321aced3c0a2e3c1377737f356b7aa04fa
author: sirjofri <sirjofri@sirjofri.de>
date: Fri Oct 18 12:39:31 EDT 2024

global export file

--- a/README.md
+++ b/README.md
@@ -16,6 +16,7 @@
 	/mnt/vcf/
 	   ctl
 	   import
+	   export
 	   John_Doe/
 	      export
 	      fn/
@@ -33,10 +34,8 @@
 
 Future plans:
 
-- Make files writable
 - ctl: make commands work
 - import: make import work
-- export: make export work
 - files: output with newline at the end?
 
 ### libvcard
--- a/vcardfs.c
+++ b/vcardfs.c
@@ -24,6 +24,8 @@
 	- "write" (save file)
 /import
 	- write new vcf file to import
+/ export
+	- read all vcards as vcf
 
 */
 
@@ -58,6 +60,7 @@
 	Qroot,
 		Qctl,
 		Qimport,
+		Qgexport,
 		Qcard,
 			Qexport,
 			Qline,
@@ -109,9 +112,20 @@
 	char *s;
 	Vcard *tmp;
 	
-	if (f->serialized)
+	if (f->level == Qgexport) {
+		if (f->cardfile->serialized)
+			free(f->cardfile->serialized);
+		f->cardfile->serialized = vcmserialize(cards);
+		if (!f->cardfile->serialized) {
+			responderror(r);
+			return;
+		}
 		goto Readin;
+	}
 	
+	if (f->cardfile->serialized)
+		goto Readin;
+	
 	tmp = f->card->next;
 	f->card->next = nil;
 	f->cardfile->serialized = vcmserialize(f->card);
@@ -118,7 +132,7 @@
 	f->card->next = tmp;
 	
 	if (!f->cardfile->serialized) {
-		respond(r, "unable to serialize");
+		responderror(r);
 		return;
 	}
 
@@ -142,6 +156,9 @@
 	case Qimport:
 		respond(r, nil);
 		return;
+	case Qgexport:
+		readserialized(r, f);
+		return;
 	case Qexport:
 		readserialized(r, f);
 		return;
@@ -456,6 +473,8 @@
 void
 main(int argc, char **argv)
 {
+	Vfile *f;
+	
 	ARGBEGIN{
 	case 'D':
 		chatty9p++;
@@ -493,6 +512,9 @@
 		emkvfile(Qctl, nil, nil, nil, nil));
 	createfile(fs.tree->root, "import", user, 0666,
 		emkvfile(Qimport, nil, nil, nil, nil));
+	f = emkvfile(Qgexport, nil, nil, nil, nil);
+	f->cardfile = f;
+	createfile(fs.tree->root, "export", user, 0444, f);
 	initcardfiles(cards);
 	
 	postmountsrv(&fs, service, mtpt, MREPL);