示例#1
0
文件: xaw_c.c 项目: 1c0n/xbmc
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;
}
示例#2
0
文件: wrdt.c 项目: Kinglions/modizer
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);
    }
}
示例#3
0
文件: wrdt.c 项目: Kinglions/modizer
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;
}
示例#4
0
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;
}