Start register_extension support for linux
Also fix a limitation on the length of open: paths
This commit is contained in:
parent
75f6ea610a
commit
6ac508a5de
@ -2236,8 +2236,8 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
int size;
|
int size;
|
||||||
void *file_data;
|
void *file_data;
|
||||||
char fn[64];
|
char *fn = malloc(strlen(argv[i]+5)+1);
|
||||||
strncpy(fn, argv[i]+5, strlen(argv[i]+5));
|
strcpy(fn, argv[i]+5);
|
||||||
file_data = file_load(fn, &size);
|
file_data = file_load(fn, &size);
|
||||||
if (file_data)
|
if (file_data)
|
||||||
{
|
{
|
||||||
|
43
src/misc.c
43
src/misc.c
@ -10,6 +10,8 @@
|
|||||||
#include "powder.h"
|
#include "powder.h"
|
||||||
#if defined WIN32
|
#if defined WIN32
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#else
|
||||||
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef MACOSX
|
#ifdef MACOSX
|
||||||
#include <ApplicationServices/ApplicationServices.h>
|
#include <ApplicationServices/ApplicationServices.h>
|
||||||
@ -487,10 +489,47 @@ int register_extension()
|
|||||||
RegCloseKey(newkey);
|
RegCloseKey(newkey);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
#elif defined LIN32
|
#elif defined(LIN32) || defined(LIN64)
|
||||||
|
char *currentfilename = exe_name();
|
||||||
|
FILE *f;
|
||||||
|
char *mimedata =
|
||||||
|
"<?xml version=\"1.0\"?>\n"
|
||||||
|
" <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>\n"
|
||||||
|
" <mime-type type=\"application/vnd.powdertoy.save\">\n"
|
||||||
|
" <comment>Powder Toy save</comment>\n"
|
||||||
|
" <glob pattern=\"*.cps\"/>\n"
|
||||||
|
" <glob pattern=\"*.stm\"/>\n"
|
||||||
|
" </mime-type>\n"
|
||||||
|
"</mime-info>\n";
|
||||||
|
f = fopen("powdertoy-save.xml", "wb");
|
||||||
|
if (!f)
|
||||||
return 0;
|
return 0;
|
||||||
#elif defined LIN64
|
fwrite(mimedata, 1, strlen(mimedata), f);
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
char *desktopfiledata_tmp =
|
||||||
|
"[Desktop Entry]\n"
|
||||||
|
"Type=Application\n"
|
||||||
|
"Name=Powder Toy\n"
|
||||||
|
"Comment=Physics sandbox game\n"
|
||||||
|
"MimeType=application/vnd.powdertoy.save;\n"
|
||||||
|
"NoDisplay=true\n";
|
||||||
|
char *desktopfiledata = malloc(strlen(desktopfiledata_tmp)+strlen(currentfilename)+100);
|
||||||
|
strcpy(desktopfiledata, desktopfiledata_tmp);
|
||||||
|
strappend(desktopfiledata, "Exec=");
|
||||||
|
strappend(desktopfiledata, currentfilename);
|
||||||
|
strappend(desktopfiledata, " open:%f\n");
|
||||||
|
f = fopen("powdertoy-tpt.desktop", "wb");
|
||||||
|
if (!f)
|
||||||
return 0;
|
return 0;
|
||||||
|
fwrite(desktopfiledata, 1, strlen(desktopfiledata), f);
|
||||||
|
fclose(f);
|
||||||
|
system("xdg-mime install powdertoy-save.xml");
|
||||||
|
system("xdg-desktop-menu install powdertoy-tpt.desktop");
|
||||||
|
// TODO: icons
|
||||||
|
unlink("powdertoy-save.xml");
|
||||||
|
unlink("powdertoy-tpt.desktop");
|
||||||
|
return 1;
|
||||||
#elif defined MACOSX
|
#elif defined MACOSX
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user