+// Create a link toward last used sessionname within sndcard directory
+STATIC void makeSessionLink (const char *cardname, const char *sessionname) {
+ char linkname [256], filename [256];
+ int err;
+ // create a link to keep track of last uploaded sessionname for this card
+ strncpy (filename, sessionname, sizeof(filename));
+ strncat (filename, ".afb", sizeof(filename));
+
+ strncpy (linkname, cardname, sizeof(linkname));
+ strncat (linkname, "/", sizeof(filename));
+ strncat (linkname, AFB_CURRENT_SESSION, sizeof(linkname));
+ strncat (linkname, ".afb", sizeof(filename));
+ unlink (linkname); // remove previous link if any
+ err = symlink (filename, linkname);
+ if (err < 0) fprintf (stderr, "Fail to create link %s->%s error=%s\n", linkname, filename, strerror(errno));
+}
+
+// verify we can read/write in session dir
+PUBLIC AFB_error sessionCheckdir (AFB_session *session) {
+
+ int err;
+
+ // in case session dir would not exist create one
+ if (verbose) fprintf (stderr, "AFB:notice checking session dir [%s]\n", session->config->sessiondir);
+ mkdir(session->config->sessiondir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
+
+ // change for session directory
+ err = chdir(session->config->sessiondir);
+ if (err) {
+ fprintf(stderr,"AFB: Fail to chdir to %s error=%s\n", session->config->sessiondir, strerror(err));
+ return err;
+ }
+
+ // verify we can write session in directory
+ json_object *dummy= json_object_new_object();
+ json_object_object_add (dummy, "checked" , json_object_new_int (getppid()));
+ err = json_object_to_file ("./AFB-probe.json", dummy);
+ if (err < 0) return err;
+
+ return AFB_SUCCESS;
+}
+