X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fapp.cpp;h=b9b0f86fe42fd935a93d82444b44b49ffc774c42;hb=d0393f158eb7b8c3b79e41edd681b4397abd153c;hp=eeb3ed35e051d77b8e01a1b6fac12a916ec3d0b2;hpb=c2813b4d63804cac9b4067146a9e6eca717cb3e4;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/app.cpp b/synfig-studio/trunk/src/gtkmm/app.cpp index eeb3ed3..b9b0f86 100644 --- a/synfig-studio/trunk/src/gtkmm/app.cpp +++ b/synfig-studio/trunk/src/gtkmm/app.cpp @@ -384,157 +384,6 @@ public: /* === P R O C E D U R E S ================================================= */ -typedef unsigned char U8; -typedef unsigned short U16; -typedef unsigned long U32; - -typedef union { - struct { - U32 serial; - U32 checksum; - } element; - U8 raw[8]; -} V_KeyUnwound; - -static inline U32 hash_U32(U32 i) -{ - i=i*1664525+1013904223; - i=i*1664525+1013904223; - i=i*1664525+1013904223; - return i; -} - -#ifdef BIG_ENDIAN -static const int endian_fix_table[8] = { 3, 2, 1, 0, 7, 6, 5, 4 } ; -#define endian_fix(x) (endian_fix_table[x]) -#else -#define endian_fix(x) (x) -#endif - -int v_unwind_key(V_KeyUnwound* unwound, const char* key) -{ - int i; - unwound->element.serial=0; - unwound->element.checksum=0; - - for(i=0;i<16;i++) - { - U8 data; - - switch(key[i]) - { - case '0': data=0; break; - case '1': data=1; break; - case '2': data=2; break; - case '3': data=3; break; - case '4': data=4; break; - case '5': data=5; break; - case '6': data=6; break; - case '7': data=7; break; - case '8': data=8; break; - case '9': data=9; break; - case 'a': case 'A': data=10; break; - case 'b': case 'B': data=11; break; - case 'c': case 'C': data=12; break; - case 'd': case 'D': data=13; break; - case 'e': case 'E': data=14; break; - case 'f': case 'F': data=15; break; - default: return 0; break; - } - int bit=i*2; - unwound->element.checksum|=(((U32)data&3)<element.serial|=(((U32)(data>>2)&3)<>24); - } - } - - unwound_key.element.serial^=appid_mask_a; - unwound_key.element.checksum^=appid_mask_b; - - *serial=unwound_key.element.serial; - - return unwound_key.element.checksum==hash_U32(unwound_key.element.serial); -} - - -#ifdef _WIN32 -# ifdef LICENSE_KEY_REQUIRED -int check_license(String basedir) -# else -int check_license(String /*basedir*/) -# endif -#else -int check_license(String /*basedir*/) -#endif -{ -#ifdef LICENSE_KEY_REQUIRED - String key; - String license_file; - -#ifndef _WIN32 - license_file="/usr/local/etc/.synfiglicense"; -#else - license_file=basedir+"\\etc\\.synfiglicense"; -#endif - - try { - key=Glib::file_get_contents(license_file); - } catch (Glib::FileError) { } - U32 serial(0); - if(!v_key_check(key.c_str(),&serial,0xdeadbeef)) - { - while(!v_key_check(key.c_str(),&serial,0xdeadbeef)) - { - key.clear(); - - if(!App::dialog_entry( - _("Synfig Studio Authentication"), - _("Please enter your license key below. You will not\nbe able to use this software without a valid license key."), - key - )) - throw String("No License"); - } - - FILE* file=fopen(license_file.c_str(),"w"); - if(file) - { - fprintf(file,"%s",key.c_str()); - fclose(file); - } - else - synfig::error("Unable to save license key!"); - } - synfig::info("License Authenticated -- Serial #%05d",serial); - return serial; -#else - return 1; -#endif -} - /* void studio::UIManager::insert_action_group (const Glib::RefPtr& action_group, int pos) @@ -1118,9 +967,6 @@ App::App(int *argc, char ***argv): { app_base_path_=etl::dirname(etl::dirname((*argv)[0])); - int serial_; - serial_=check_license(app_base_path_); - ui_interface_=new GlobalUIInterface(); @@ -1146,10 +992,8 @@ App::App(int *argc, char ***argv): ipc=new IPC(); - try + if(!SYNFIG_CHECK_VERSION()) { - if(!SYNFIG_CHECK_VERSION()) - { cerr<<"FATAL: Synfig Version Mismatch"<present(); } + catch(String x) + { + get_ui_interface()->error(_("Unknown exception caught when constructing App.\nThis software may be unstable.") + String("\n\n") + x); + } catch(...) { get_ui_interface()->error(_("Unknown exception caught when constructing App.\nThis software may be unstable."));