// public void MhProtoClient::DownloadMetadataFromServer(int smd, const char *remote_file, int64_t chunk_size) { int16_t response; char abs_file[2048]; DEBUG("MhProtoClient::DownloadMetadataFromServer()\n"); SndCmd(smd, DOWNLOAD_METADATA); write(smd, &chunk_size, sizeof(int64_t)); int16_t path_size = strlen(remote_file); write(smd, &path_size, sizeof(int16_t)); write(smd, remote_file, path_size); so_read(smd, &response, sizeof(int16_t)); DEBUG("DownloadMetadataFromServer->response : %d\n", response); if (response == MH_FILE_NOT_FOUND) { printf("Remote file not found.\n"); ClearResources(); exit(1); } CopyString(abs_file, AbsoluteFile(remote_file)); StrCat(abs_file, ".mdata"); // Metadata::SaveMetadata only updates, so create "touch" metadata // file first. int fd = open(abs_file , O_WRONLY | O_CREAT, 0000644); close(fd); Metadata metadata; metadata.ReadMetadataHeader(smd); metadata.initControlData(); metadata.SaveMetadata(abs_file); }
static char * findHome(const char *symbols, int argc, const char **argv) { const char *home = NULL; char envbuf[MAXPATHLEN]; char plp[MAXPATHLEN]; const char *val; if ( (val=longopt("home", argc, argv)) ) { if ( (home=PrologPath(val, plp, sizeof(plp))) ) return store_string(home); return NULL; } if ( (val = exec_var("homevar")) && (home = Getenv(val, envbuf, sizeof(envbuf))) && (home = PrologPath(home, plp, sizeof(plp))) ) return store_string(home); if ( (val = exec_var("home")) && (home = PrologPath(val, plp, sizeof(plp))) ) return store_string(home); #ifdef PLHOMEVAR_1 if ( !(home = Getenv(PLHOMEVAR_1, envbuf, sizeof(envbuf))) ) { #ifdef PLHOMEVAR_2 home = Getenv(PLHOMEVAR_2, envbuf, sizeof(envbuf)); #endif } if ( home && (home = PrologPath(home, plp, sizeof(plp))) && ExistsDirectory(home) ) return store_string(home); #endif #ifdef PLHOMEFILE if ( (home = symbols) ) { char buf[MAXPATHLEN]; char parent[MAXPATHLEN]; IOSTREAM *fd; strcpy(parent, DirName(DirName(AbsoluteFile(home, buf), buf), buf)); Ssprintf(buf, "%s/" PLHOMEFILE, parent); if ( (fd = Sopen_file(buf, "r")) ) { if ( Sfgets(buf, sizeof(buf), fd) ) { size_t l = strlen(buf); while(l > 0 && buf[l-1] <= ' ') l--; buf[l] = EOS; #if O_XOS { char buf2[MAXPATHLEN]; _xos_canonical_filename(buf, buf2, MAXPATHLEN, 0); strcpy(buf, buf2); } #endif if ( !IsAbsolutePath(buf) ) { char buf2[MAXPATHLEN]; Ssprintf(buf2, "%s/%s", parent, buf); home = AbsoluteFile(buf2, plp); } else home = AbsoluteFile(buf, plp); if ( ExistsDirectory(home) ) { Sclose(fd); return store_string(home); } } Sclose(fd); } } #endif /*PLHOMEFILE*/ if ( (home = PrologPath(PLHOME, plp, sizeof(plp))) && ExistsDirectory(home) ) return store_string(home); return NULL; }
static char * findHome(char *symbols) { char *home = NULL; char envbuf[MAXPATHLEN]; char plp[MAXPATHLEN]; const char *val; if ( (val = exec_var("homevar")) && (home = getenv3(val, envbuf, sizeof(envbuf))) && (home = PrologPath(home, plp)) ) return store_string(home); if ( (val = exec_var("home")) && (home = PrologPath(home, plp)) ) return store_string(home); if ( !(home = getenv3("SWI_HOME_DIR", envbuf, sizeof(envbuf))) ) home = getenv3("SWIPL", envbuf, sizeof(envbuf)); if ( home && (home = PrologPath(home, plp)) && ExistsDirectory(home) ) return store_string(home); if ( (home = symbols) ) { char buf[MAXPATHLEN]; char parent[MAXPATHLEN]; IOSTREAM *fd; strcpy(parent, DirName(DirName(AbsoluteFile(home, buf), buf), buf)); Ssprintf(buf, "%s/swipl", parent); if ( (fd = Sopen_file(buf, "r")) ) { if ( Sfgets(buf, sizeof(buf), fd) ) { int l = strlen(buf); while(l > 0 && buf[l-1] <= ' ') l--; buf[l] = EOS; #if O_XOS { char buf2[MAXPATHLEN]; _xos_canonical_filename(buf, buf2); strcpy(buf, buf2); } #endif if ( !IsAbsolutePath(buf) ) { char buf2[MAXPATHLEN]; Ssprintf(buf2, "%s/%s", parent, buf); home = AbsoluteFile(buf2, plp); } else home = AbsoluteFile(buf, plp); if ( ExistsDirectory(home) ) { Sclose(fd); return store_string(home); } } Sclose(fd); } } if ( (home = PrologPath(PLHOME, plp)) && ExistsDirectory(home) ) return store_string(home); return NULL; }