static int fill_menu(menu_t* menu) { list_entry_t* elem; dvb_channels_list *dvb_list_ptr; menu_list_init(menu); if(mpriv->config == NULL) { if((elem = calloc(1, sizeof(list_entry_t))) != NULL) { elem->p.prev = elem->p.next = NULL; elem->p.txt = strdup("NO DVB configuration present!"); menu_list_add_entry(menu, elem); return 1; } return 0; } mpriv->p.title = mpriv->title; if(mpriv->level == 1 && mpriv->config->count > 1) return fill_cards_menu(menu, mpriv->config); else { dvb_list_ptr = mpriv->config->cards[mpriv->card].list; return fill_channels_menu(menu, dvb_list_ptr); } }
int Cseq_init(){ char** menu= menu_list_init(20,8); menu[0] ="cree"; menu[1] ="modifier"; menu[2] ="suprimer"; menu[3] ="jouer"; menu[4] ="ouvrir"; menu[5] ="sauvegarder"; menu[6] ="help"; menu_seq = ncu_menu_init(1,1,20,9,menu,7); interface_seq = ncu_sequence_init(seqa,1,10,20,30); frame = ncu_frame_init(24,15); return 0; }
static int op(menu_t* menu, char* args) { play_tree_t* i; list_entry_t* e; play_tree_iter_t* playtree_iter = mpctx_get_playtree_iter(menu->ctx); args = NULL; // Warning kill menu->draw = menu_list_draw; menu->read_cmd = read_cmd; menu->read_key = read_key; menu->close = close_menu; menu_list_init(menu); mpriv->p.title = mpriv->title; if(playtree_iter->tree->parent != playtree_iter->root) { e = calloc(1,sizeof(list_entry_t)); e->p.txt = ".."; e->pt = playtree_iter->tree->parent; menu_list_add_entry(menu,e); } for(i = playtree_iter->tree ; i->prev != NULL ; i = i->prev) /* NOP */; for( ; i != NULL ; i = i->next ) { e = calloc(1,sizeof(list_entry_t)); if(i->files) e->p.txt = (char *)mp_basename(i->files[0]); else e->p.txt = "Group ..."; e->pt = i; menu_list_add_entry(menu,e); } return 1; }
static int open_dir(menu_t* menu,char* args) { char **namelist, **tp; struct dirent *dp; struct stat st; int n; int path_fp; char* p = NULL; list_entry_t* e; DIR* dirp; extern int file_filter; char **extensions, **elem, *ext; menu_list_init(menu); if(mpriv->dir) free(mpriv->dir); mpriv->dir = strdup(args); if(mpriv->p.title && mpriv->p.title != mpriv->title && mpriv->p.title != cfg_dflt.p.title) free(mpriv->p.title); p = strstr(mpriv->title,"%p"); mpriv->p.title = replace_path(mpriv->title,mpriv->dir,0); if ((dirp = opendir (mpriv->dir)) == NULL){ mp_msg(MSGT_GLOBAL,MSGL_ERR,MSGTR_LIBMENU_OpendirError, strerror(errno)); return 0; } if (menu_keepdir) { path_fp = open (MENU_KEEP_PATH, O_CREAT | O_WRONLY | O_TRUNC, 0666); if (path_fp >= 0) { write (path_fp, mpriv->dir, strlen (mpriv->dir)); close (path_fp); } } namelist = malloc(sizeof(char *)); extensions = get_extensions(menu); n=0; while ((dp = readdir(dirp)) != NULL) { if(dp->d_name[0] == '.' && strcmp(dp->d_name,"..") != 0) continue; if (menu_chroot && !strcmp (dp->d_name,"..")) { size_t len = strlen (menu_chroot); if ((strlen (mpriv->dir) == len || strlen (mpriv->dir) == len + 1) && !strncmp (mpriv->dir, menu_chroot, len)) continue; } if (mylstat(args,dp->d_name,&st)) continue; if (file_filter && extensions && !S_ISDIR(st.st_mode)) { if((ext = strrchr(dp->d_name,'.')) == NULL) continue; ext++; elem = extensions; do { if (!strcasecmp(ext, *elem)) break; } while (*++elem); if (*elem == NULL) continue; } if(n%20 == 0){ // Get some more mem if((tp = realloc(namelist, (n+20) * sizeof (char *))) == NULL) { mp_msg(MSGT_GLOBAL,MSGL_ERR,MSGTR_LIBMENU_ReallocError, strerror(errno)); n--; goto bailout; } namelist=tp; } namelist[n] = malloc(strlen(dp->d_name) + 2); if(namelist[n] == NULL){ mp_msg(MSGT_GLOBAL,MSGL_ERR,MSGTR_LIBMENU_MallocError, strerror(errno)); n--; goto bailout; } strcpy(namelist[n], dp->d_name); if(S_ISDIR(st.st_mode)) strcat(namelist[n], "/"); n++; } bailout: free_extensions (extensions); closedir(dirp); qsort(namelist, n, sizeof(char *), (kill_warn)compare); if (n < 0) { mp_msg(MSGT_GLOBAL,MSGL_ERR,MSGTR_LIBMENU_ReaddirError,strerror(errno)); return 0; } while(n--) { if((e = calloc(1,sizeof(list_entry_t))) != NULL){ e->p.next = NULL; e->p.txt = strdup(namelist[n]); if(strchr(namelist[n], '/') != NULL) e->d = 1; menu_list_add_entry(menu,e); }else{ mp_msg(MSGT_GLOBAL,MSGL_ERR,MSGTR_LIBMENU_MallocError, strerror(errno)); } free(namelist[n]); } free(namelist); return 1; }