Add sources for the file manager program (#944)
This commit is contained in:
		
				
					committed by
					
						
						Peli de Halleux
					
				
			
			
				
	
			
			
			
						parent
						
							e0c8f65a65
						
					
				
				
					commit
					cb6c83eec7
				
			@@ -120,7 +120,7 @@ void stopLMS() {
 | 
			
		||||
        if (!pid)
 | 
			
		||||
            continue;
 | 
			
		||||
        char namebuf[100];
 | 
			
		||||
        snprintf(namebuf, 1000, "/proc/%d/cmdline", pid);
 | 
			
		||||
        snprintf(namebuf, 100, "/proc/%d/cmdline", pid);
 | 
			
		||||
        FILE *f = fopen(namebuf, "r");
 | 
			
		||||
        if (f) {
 | 
			
		||||
            fread(namebuf, 1, 99, f);
 | 
			
		||||
@@ -195,5 +195,42 @@ void target_startup() {
 | 
			
		||||
 | 
			
		||||
void initKeys() {}
 | 
			
		||||
 | 
			
		||||
static const char *progPath = "/mnt/ramdisk/prjs/BrkProg_SAVE";
 | 
			
		||||
 | 
			
		||||
// These are disabled except when building File_manager.pdf
 | 
			
		||||
// %
 | 
			
		||||
void deletePrjFile(String filename) {
 | 
			
		||||
    const char *d = filename->getUTF8Data();
 | 
			
		||||
    if (strlen(d) > 500 || strchr(d, '/'))
 | 
			
		||||
        return;
 | 
			
		||||
    char buf[1024];
 | 
			
		||||
    snprintf(buf, sizeof(buf), "%s/%s", progPath, d);
 | 
			
		||||
    unlink(buf);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// %
 | 
			
		||||
RefCollection *listPrjFiles() {
 | 
			
		||||
    auto res = Array_::mk();
 | 
			
		||||
    registerGCObj(res);
 | 
			
		||||
 | 
			
		||||
    auto dp = opendir(progPath);
 | 
			
		||||
 | 
			
		||||
    for (;;) {
 | 
			
		||||
        dirent *ep = dp ? readdir(dp) : NULL;
 | 
			
		||||
        if (!ep)
 | 
			
		||||
            break;
 | 
			
		||||
        if (ep->d_name[0] == '.')
 | 
			
		||||
            continue;
 | 
			
		||||
        auto str = mkString(ep->d_name, -1);
 | 
			
		||||
        registerGCObj(str);
 | 
			
		||||
        res->head.push((TValue)str);
 | 
			
		||||
        unregisterGCObj(str);
 | 
			
		||||
    }
 | 
			
		||||
    if (dp)
 | 
			
		||||
        closedir(dp);
 | 
			
		||||
    unregisterGCObj(res);
 | 
			
		||||
 | 
			
		||||
    return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user