#include <stdio.h>
#include <dirent.h>
#include <string.h>
DIR *dir;
FILE *fp;
char buf[64], str[1024];
char *name, *icon, *exec;
char *appdir="/usr/share/applications/";
struct dirent *entry;
int main(int argc, char *argv[]) {
if (argc<2) {
printf("Категория? %s","\n");
return 0;
}
dir = opendir(appdir);
if (!dir) {
perror("diropen");
}
printf("<JWM>%s","\n");
while ((entry = readdir(dir))!=0) {
if (strstr(entry->d_name,".desktop")!=0 ) {
buf[0]=0;
strcat(buf,appdir);
strcat(buf,entry->d_name);
fp=fopen(buf,"r");
while (fgets(str,sizeof(str),fp)!=0) {
if (strstr(str,argv[1])!=0) {
while (fgets(str,sizeof(str),fp)!=0) {
name=strstr(str,"Name");
// *strchr(strchr(name, '=') + 1, '\n') = 0;
// name=("%s\n", strchr(name, '=') + 1);
}
while (fgets(str,sizeof(str),fp)!=0) {
icon=strstr(str,"Icon");
}
while (fgets(str,sizeof(str),fp)!=0) {
exec=strstr(str,"Exec");
}
printf("\t<Program %s%s%s %s%s%s%s%s%s","label=\"",name,"\"","icon\"",icon,"\">",exec,"</Program>","\n");
}
}
fclose(fp);
}
}
closedir(dir);
printf("<JWM>%s","\n");
}