static int cmsg(int type, int verbosity_level, char *fmt, ...) { va_list ap; char *buff; MBlockList pool; if ((type==CMSG_TEXT || type==CMSG_INFO || type==CMSG_WARNING) && ctl.verbosity<verbosity_level) return 0; va_start(ap, fmt); if(!xaw_ready) { vfprintf(stderr, fmt, ap); fprintf(stderr, NLS); va_end(ap); return 0; } init_mblock(&pool); buff = (char *)new_segment(&pool, MIN_MBLOCK_SIZE); vsnprintf(buff, MIN_MBLOCK_SIZE, fmt, ap); a_pipe_write_msg(buff); reuse_mblock(&pool); va_end(ap); return 0; }
void wrd_add_path(char *path, int pathlen) { if(pathlen == 0) pathlen = strlen(path); if(!wrd_add_path_one(path, pathlen)) return; if(current_file_info && get_archive_type(current_file_info->filename) != -1) { MBlockList buf; char *arc_path; int baselen; init_mblock(&buf); baselen = strrchr(current_file_info->filename, '#') - current_file_info->filename + 1; arc_path = new_segment(&buf, baselen + pathlen + 1); strncpy(arc_path, current_file_info->filename, baselen); strncpy(arc_path + baselen, path, pathlen); arc_path[baselen + pathlen] = '\0'; put_string_table(&path_list, arc_path, strlen(arc_path)); reuse_mblock(&buf); } }
static struct timidity_file *try_wrd_open_file(char *prefix, char *fn) { MBlockList buf; char *path; int len1, len2; struct timidity_file *tf; init_mblock(&buf); len1 = strlen(prefix); len2 = strlen(fn); path = (char *)new_segment(&buf, len1 + len2 + 2); strcpy(path, prefix); if( len1>0 && path[len1 - 1] != '#' && !IS_PATH_SEP(path[len1 - 1])) { path[len1++] = PATH_SEP; path[len1] = '\0'; } strcat(path, fn); tf = open_file(path, 0, OF_SILENT); reuse_mblock(&buf); return tf; }
URL url_file_open(char *fname) { URL_file *url; char *mapptr; /* Non NULL if mmap is success */ long mapsize; FILE *fp; /* Non NULL if mmap is failure */ #ifdef __W32__ HANDLE hFile, hMap; #endif /* __W32__ */ #ifdef DEBUG printf("url_file_open(%s)\n", fname); #endif /* DEBUG */ if(!strcmp(fname, "-")) { mapptr = NULL; mapsize = 0; fp = stdin; goto done; } if(strncasecmp(fname, "file:", 5) == 0) fname += 5; if(*fname == '\0') { url_errno = errno = ENOENT; return NULL; } fname = url_expand_home_dir(fname); fp = NULL; mapsize = 0; errno = 0; mapptr = try_mmap(fname, &mapsize); if(errno == ENOENT || errno == EACCES) { url_errno = errno; return NULL; } #ifdef DEBUG if(mapptr != NULL) printf("mmap - success. size=%d\n", mapsize); #ifdef HAVE_MMAP else printf("mmap - failure.\n"); #endif #endif /* DEBUG */ if(mapptr == NULL) { #ifdef __MACOS__ char *cnvname; MBlockList pool; init_mblock(&pool); cnvname = (char *)strdup_mblock(&pool, fname); mac_TransPathSeparater(fname, cnvname); fp = fopen(cnvname, "rb"); reuse_mblock(&pool); if( fp==NULL ) { /*try original name*/ fp = fopen(fname, "rb"); } #else fp = fopen(fname, "rb"); #endif if(fp == NULL) { url_errno = errno; return NULL; } } done: url = (URL_file *)alloc_url(sizeof(URL_file)); if(url == NULL) { url_errno = errno; if(mapptr) munmap(mapptr, mapsize); if(fp && fp != stdin) fclose(fp); errno = url_errno; return NULL; } /* common members */ URLm(url, type) = URL_file_t; URLm(url, url_read) = url_file_read; URLm(url, url_gets) = url_file_gets; URLm(url, url_fgetc) = url_file_fgetc; URLm(url, url_close) = url_file_close; if(fp == stdin) { URLm(url, url_seek) = NULL; URLm(url, url_tell) = NULL; } else { URLm(url, url_seek) = url_file_seek; URLm(url, url_tell) = url_file_tell; } /* private members */ url->mapptr = mapptr; url->mapsize = mapsize; url->pos = 0; url->fp = fp; #ifdef __W32__ url->hFile = hFile; url->hMap = hMap; #endif /* __W32__ */ return (URL)url; }