static void smb_set_configuration(SCDynamicStoreRef store, CFDictionaryRef dict) { CFArrayRef array; Boolean changed = FALSE; UInt32 dosCodepage = 0; CFStringEncoding dosEncoding = 0; CFStringEncoding macEncoding = kCFStringEncodingMacRoman; uint32_t macRegion = 0; Boolean ok; SCPreferencesRef prefs; CFStringRef str; prefs = SCPreferencesCreate(NULL, CFSTR("smb-configuration"), CFSTR(kSMBPreferencesAppID)); if (prefs == NULL) { my_log(LOG_ERR, "smb_set_configuration: SCPreferencesCreate() failed: %s", SCErrorString(SCError())); return; } ok = SCPreferencesLock(prefs, TRUE); if (!ok) { my_log(LOG_ERR, "smb_set_configuration: SCPreferencesLock() failed: %s", SCErrorString(SCError())); goto done; } // Server description str = SCDynamicStoreCopyComputerName(store, &macEncoding); update_pref(prefs, CFSTR(kSMBPrefServerDescription), str, &changed); // DOS code page if (str != NULL) { if (macEncoding == kCFStringEncodingMacRoman) { CFStringRef key; CFDictionaryRef dict; // get region key = SCDynamicStoreKeyCreateComputerName(NULL); dict = SCDynamicStoreCopyValue(store, key); CFRelease(key); if (dict != NULL) { if (isA_CFDictionary(dict)) { CFNumberRef num; SInt32 val; num = CFDictionaryGetValue(dict, kSCPropSystemComputerNameRegion); if (isA_CFNumber(num) && CFNumberGetValue(num, kCFNumberSInt32Type, &val)) { macRegion = (uint32_t)val; } } CFRelease(dict); } } CFRelease(str); } else { // Important: must have root acccess (eUID==0) to access the config file! __CFStringGetInstallationEncodingAndRegion((uint32_t *)&macEncoding, &macRegion); } _SC_dos_encoding_and_codepage(macEncoding, macRegion, &dosEncoding, &dosCodepage); str = CFStringCreateWithFormat(NULL, NULL, CFSTR("%d"), (unsigned int)dosCodepage); assert(str != NULL); update_pref(prefs, CFSTR(kSMBPrefDOSCodePage), str, &changed); CFRelease(str); // NetBIOS name str = CFDictionaryGetValue(dict, kSCPropNetSMBNetBIOSName); str = isA_CFString(str); update_pref(prefs, CFSTR(kSMBPrefNetBIOSName), str, &changed); // NetBIOS node type str = CFDictionaryGetValue(dict, kSCPropNetSMBNetBIOSNodeType); str = isA_CFString(str); if (str != NULL) { if (CFEqual(str, kSCValNetSMBNetBIOSNodeTypeBroadcast)) { // B-node str = CFSTR(kSMBPrefNetBIOSNodeBroadcast); } else if (CFEqual(str, kSCValNetSMBNetBIOSNodeTypePeer)) { // P-node str = CFSTR(kSMBPrefNetBIOSNodePeer); } else if (CFEqual(str, kSCValNetSMBNetBIOSNodeTypeMixed)) { // M-node str = CFSTR(kSMBPrefNetBIOSNodeMixed); } else if (CFEqual(str, kSCValNetSMBNetBIOSNodeTypeHybrid)) { // H-node str = CFSTR(kSMBPrefNetBIOSNodeHybrid); } else { str = NULL; } } update_pref(prefs, CFSTR(kSMBPrefNetBIOSNodeType), str, &changed); #ifdef ADD_NETBIOS_SCOPE // NetBIOS scope str = CFDictionaryGetValue(dict, kSCPropNetSMBNetBIOSScope); str = isA_CFString(str); update_pref(prefs, CFSTR(kSMBPrefNetBIOSScope), str, &changed); #endif // ADD_NETBIOS_SCOPE // WINS addresses array = CFDictionaryGetValue(dict, kSCPropNetSMBWINSAddresses); array = isA_CFArray(array); update_pref(prefs, CFSTR(kSMBPrefWINSServerAddressList), array, &changed); // Workgroup (or domain) str = CFDictionaryGetValue(dict, kSCPropNetSMBWorkgroup); str = isA_CFString(str); update_pref(prefs, CFSTR(kSMBPrefWorkgroup), str, &changed); if (changed) { ok = SCPreferencesCommitChanges(prefs); if (!ok) { if ((SCError() != EROFS)) { my_log(LOG_ERR, "smb_set_configuration: SCPreferencesCommitChanges() failed: %s", SCErrorString(SCError())); } goto done; } ok = SCPreferencesApplyChanges(prefs); if (!ok) { my_log(LOG_ERR, "smb_set_configuration: SCPreferencesApplyChanges() failed: %s", SCErrorString(SCError())); goto done; } } done : (void) SCPreferencesUnlock(prefs); CFRelease(prefs); return; }
/** * Invokes the init routines for internal modules. * * This should be a list of all the internal modules that need to initialized. This is just a * convinent place to put them. Also, this function calls build_module_from_dir to parse the * Inkscape extensions directory. */ void init() { /* TODO: Change to Internal */ Internal::Svg::init(); Internal::Svgz::init(); #ifdef HAVE_CAIRO_PDF //g_print ("Using CairoRendererPdfOutput: new pdf exporter\n"); Internal::CairoRendererPdfOutput::init(); Internal::CairoRendererOutput::init(); Internal::CairoPsOutput::init(); Internal::CairoEpsOutput::init(); #endif #ifdef HAVE_POPPLER Internal::PdfInput::init(); #endif Internal::PrintEmf::init(); Internal::Emf::init(); Internal::PrintWmf::init(); Internal::Wmf::init(); Internal::PovOutput::init(); Internal::JavaFXOutput::init(); Internal::OdfOutput::init(); Internal::PrintLatex::init(); Internal::LatexOutput::init(); #ifdef WITH_LIBWPG Internal::WpgInput::init(); #endif #ifdef WITH_LIBVISIO Internal::VsdInput::init(); #endif #ifdef WITH_LIBCDR Internal::CdrInput::init(); #endif /* Effects */ Internal::BlurEdge::init(); Internal::GimpGrad::init(); Internal::Grid::init(); #ifdef WITH_DBUS Dbus::init(); #endif /* Raster Effects */ #ifdef WITH_IMAGE_MAGICK Internal::Bitmap::AdaptiveThreshold::init(); Internal::Bitmap::AddNoise::init(); Internal::Bitmap::Blur::init(); Internal::Bitmap::Channel::init(); Internal::Bitmap::Charcoal::init(); Internal::Bitmap::Colorize::init(); Internal::Bitmap::Contrast::init(); Internal::Bitmap::Crop::init(); Internal::Bitmap::CycleColormap::init(); Internal::Bitmap::Edge::init(); Internal::Bitmap::Despeckle::init(); Internal::Bitmap::Emboss::init(); Internal::Bitmap::Enhance::init(); Internal::Bitmap::Equalize::init(); Internal::Bitmap::GaussianBlur::init(); Internal::Bitmap::Implode::init(); Internal::Bitmap::Level::init(); Internal::Bitmap::LevelChannel::init(); Internal::Bitmap::MedianFilter::init(); Internal::Bitmap::Modulate::init(); Internal::Bitmap::Negate::init(); Internal::Bitmap::Normalize::init(); Internal::Bitmap::OilPaint::init(); Internal::Bitmap::Opacity::init(); Internal::Bitmap::Raise::init(); Internal::Bitmap::ReduceNoise::init(); Internal::Bitmap::Sample::init(); Internal::Bitmap::Shade::init(); Internal::Bitmap::Sharpen::init(); Internal::Bitmap::Solarize::init(); Internal::Bitmap::Spread::init(); Internal::Bitmap::Swirl::init(); //Internal::Bitmap::Threshold::init(); Internal::Bitmap::Unsharpmask::init(); Internal::Bitmap::Wave::init(); #endif /* WITH_IMAGE_MAGICK */ Internal::Filter::Filter::filters_all(); /* Load search path for extensions */ if (Inkscape::Extension::Extension::search_path.size() == 0) { Inkscape::Extension::Extension::search_path.push_back(Inkscape::Application::profile_path("extensions")); Inkscape::Extension::Extension::search_path.push_back(g_strdup(INKSCAPE_EXTENSIONDIR)); } for (unsigned int i=0; i<Inkscape::Extension::Extension::search_path.size(); i++) { build_module_from_dir(Inkscape::Extension::Extension::search_path[i]); } /* this is at the very end because it has several catch-alls * that are possibly over-ridden by other extensions (such as * svgz) */ Internal::GdkpixbufInput::init(); /* now we need to check and make sure everyone is happy */ check_extensions(); /* This is a hack to deal with updating saved outdated module * names in the prefs... */ update_pref("/dialogs/save_as/default", SP_MODULE_KEY_OUTPUT_SVG_INKSCAPE // Inkscape::Extension::db.get_output_list() ); }