亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nsseamonkeyprofilemigrator.cpp

?? 現(xiàn)在很火的郵件客戶端軟件thunderbird的源碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
    *aResult = PR_FALSE;  return NS_OK;}NS_IMETHODIMPnsSeamonkeyProfileMigrator::GetSourceProfiles(nsISupportsArray** aResult){  if (!mProfileNames && !mProfileLocations) {    nsresult rv = NS_NewISupportsArray(getter_AddRefs(mProfileNames));    if (NS_FAILED(rv)) return rv;    rv = NS_NewISupportsArray(getter_AddRefs(mProfileLocations));    if (NS_FAILED(rv)) return rv;    // Fills mProfileNames and mProfileLocations    FillProfileDataFromSeamonkeyRegistry();  }    NS_IF_ADDREF(*aResult = mProfileNames);  return NS_OK;}///////////////////////////////////////////////////////////////////////////////// nsSeamonkeyProfileMigratornsresultnsSeamonkeyProfileMigrator::GetSourceProfile(const PRUnichar* aProfile){  PRUint32 count;  mProfileNames->Count(&count);  for (PRUint32 i = 0; i < count; ++i) {    nsCOMPtr<nsISupportsString> str(do_QueryElementAt(mProfileNames, i));    nsXPIDLString profileName;    str->GetData(profileName);    if (profileName.Equals(aProfile)) {      mSourceProfile = do_QueryElementAt(mProfileLocations, i);      break;    }  }  return NS_OK;}nsresultnsSeamonkeyProfileMigrator::FillProfileDataFromSeamonkeyRegistry(){  // Find the Seamonkey Registry  nsCOMPtr<nsIProperties> fileLocator(do_GetService("@mozilla.org/file/directory_service;1"));  nsCOMPtr<nsILocalFile> seamonkeyRegistry;#ifdef XP_WIN  fileLocator->Get(NS_WIN_APPDATA_DIR, NS_GET_IID(nsILocalFile), getter_AddRefs(seamonkeyRegistry));  NS_ENSURE_TRUE(seamonkeyRegistry, NS_ERROR_FAILURE);  seamonkeyRegistry->Append(NS_LITERAL_STRING("Mozilla"));  seamonkeyRegistry->Append(NS_LITERAL_STRING("registry.dat"));#elif defined(XP_MACOSX)  fileLocator->Get(NS_MAC_USER_LIB_DIR, NS_GET_IID(nsILocalFile), getter_AddRefs(seamonkeyRegistry));  NS_ENSURE_TRUE(seamonkeyRegistry, NS_ERROR_FAILURE);    seamonkeyRegistry->Append(NS_LITERAL_STRING("Mozilla"));  seamonkeyRegistry->Append(NS_LITERAL_STRING("Application Registry"));#elif defined(XP_UNIX)  fileLocator->Get(NS_UNIX_HOME_DIR, NS_GET_IID(nsILocalFile), getter_AddRefs(seamonkeyRegistry));  NS_ENSURE_TRUE(seamonkeyRegistry, NS_ERROR_FAILURE);    seamonkeyRegistry->Append(NS_LITERAL_STRING(".mozilla"));  seamonkeyRegistry->Append(NS_LITERAL_STRING("appreg"));#elif defined(XP_OS2)  fileLocator->Get(NS_OS2_HOME_DIR, NS_GET_IID(nsILocalFile), getter_AddRefs(seamonkeyRegistry));  NS_ENSURE_TRUE(seamonkeyRegistry, NS_ERROR_FAILURE);    seamonkeyRegistry->Append(NS_LITERAL_STRING("Mozilla"));  seamonkeyRegistry->Append(NS_LITERAL_STRING("registry.dat"));#endif  return GetProfileDataFromRegistry(seamonkeyRegistry, mProfileNames, mProfileLocations);}#define F(a) nsSeamonkeyProfileMigrator::a#define MAKEPREFTRANSFORM(pref, newpref, getmethod, setmethod) \  { pref, newpref, F(Get##getmethod), F(Set##setmethod), PR_FALSE, -1 }#define MAKESAMETYPEPREFTRANSFORM(pref, method) \  { pref, 0, F(Get##method), F(Set##method), PR_FALSE, -1 }static nsSeamonkeyProfileMigrator::PrefTransform gTransforms[] = {  MAKESAMETYPEPREFTRANSFORM("signon.SignonFileName",                    String),  MAKESAMETYPEPREFTRANSFORM("mailnews.headers.showUserAgent",           Bool),  MAKESAMETYPEPREFTRANSFORM("mailnews.headers.showOrganization",        Bool),  MAKESAMETYPEPREFTRANSFORM("mail.collect_addressbook",                 String),   MAKESAMETYPEPREFTRANSFORM("mail.collect_email_address_outgoing",      Bool),  MAKESAMETYPEPREFTRANSFORM("mail.wrap_long_lines",                     Bool),  MAKESAMETYPEPREFTRANSFORM("news.wrap_long_lines",                     Bool),  MAKESAMETYPEPREFTRANSFORM("mailnews.customHeaders",                   String),  MAKESAMETYPEPREFTRANSFORM("mail.default_html_action",                 Int),  MAKESAMETYPEPREFTRANSFORM("mail.forward_message_mode",                Int),  MAKESAMETYPEPREFTRANSFORM("mail.SpellCheckBeforeSend",                Bool),  MAKESAMETYPEPREFTRANSFORM("mail.warn_on_send_accel_key",              Bool),  MAKESAMETYPEPREFTRANSFORM("mailnews.html_domains",                    String),  MAKESAMETYPEPREFTRANSFORM("mailnews.plaintext_domains",               String),  MAKESAMETYPEPREFTRANSFORM("mailnews.headers.showUserAgent",           Bool),   MAKESAMETYPEPREFTRANSFORM("mailnews.headers.showOrganization",        Bool),   MAKESAMETYPEPREFTRANSFORM("mail.biff.play_sound",                     Bool),  MAKESAMETYPEPREFTRANSFORM("mail.biff.play_sound.type",                Int),  MAKESAMETYPEPREFTRANSFORM("mail.biff.play_sound.url",                 String),  MAKESAMETYPEPREFTRANSFORM("mail.biff.show_alert",                     Bool),  MAKESAMETYPEPREFTRANSFORM("network.proxy.type",                       Int),  MAKESAMETYPEPREFTRANSFORM("network.proxy.http",                       String),  MAKESAMETYPEPREFTRANSFORM("network.proxy.http_port",                  Int),  MAKESAMETYPEPREFTRANSFORM("network.proxy.ftp",                        String),  MAKESAMETYPEPREFTRANSFORM("network.proxy.ftp_port",                   Int),  MAKESAMETYPEPREFTRANSFORM("network.proxy.ssl",                        String),  MAKESAMETYPEPREFTRANSFORM("network.proxy.ssl_port",                   Int),  MAKESAMETYPEPREFTRANSFORM("network.proxy.socks",                      String),  MAKESAMETYPEPREFTRANSFORM("network.proxy.socks_port",                 Int),  MAKESAMETYPEPREFTRANSFORM("network.proxy.gopher",                     String),  MAKESAMETYPEPREFTRANSFORM("network.proxy.gopher_port",                Int),  MAKESAMETYPEPREFTRANSFORM("network.proxy.no_proxies_on",              String),  MAKESAMETYPEPREFTRANSFORM("network.proxy.autoconfig_url",             String),  MAKESAMETYPEPREFTRANSFORM("mail.accountmanager.accounts",             String),  MAKESAMETYPEPREFTRANSFORM("mail.accountmanager.defaultaccount",       String),  MAKESAMETYPEPREFTRANSFORM("mail.accountmanager.localfoldersserver",   String),   MAKESAMETYPEPREFTRANSFORM("mail.smtp.defaultserver",   String),   MAKESAMETYPEPREFTRANSFORM("msgcompose.font_face",                     String),  MAKESAMETYPEPREFTRANSFORM("msgcompose.font_size",                     String),  MAKESAMETYPEPREFTRANSFORM("msgcompose.text_color",                    String),  MAKESAMETYPEPREFTRANSFORM("msgcompose.background_color",              String),  MAKEPREFTRANSFORM("mail.pane_config","mail.pane_config.dynamic", Int, Int)};nsresultnsSeamonkeyProfileMigrator::TransformPreferences(const nsAString& aSourcePrefFileName,                                                 const nsAString& aTargetPrefFileName){  PrefTransform* transform;  PrefTransform* end = gTransforms + sizeof(gTransforms)/sizeof(PrefTransform);  // Load the source pref file  nsCOMPtr<nsIPrefService> psvc(do_GetService(NS_PREFSERVICE_CONTRACTID));  psvc->ResetPrefs();  nsCOMPtr<nsIFile> sourcePrefsFile;  mSourceProfile->Clone(getter_AddRefs(sourcePrefsFile));  sourcePrefsFile->Append(aSourcePrefFileName);  psvc->ReadUserPrefs(sourcePrefsFile);  nsCOMPtr<nsIPrefBranch> branch(do_QueryInterface(psvc));  for (transform = gTransforms; transform < end; ++transform)    transform->prefGetterFunc(transform, branch);  // read in the various pref branch trees for accounts, identities, servers, etc.   nsVoidArray* accounts = new nsVoidArray();  nsVoidArray* identities = new nsVoidArray();  nsVoidArray* servers = new nsVoidArray();  nsVoidArray* smtpservers = new nsVoidArray();  nsVoidArray* ldapservers = new nsVoidArray();  nsVoidArray* labelPrefs = new nsVoidArray();  if (!accounts || !identities || !servers || !smtpservers || !ldapservers)    return NS_ERROR_OUT_OF_MEMORY;    ReadBranch("mail.account.", psvc, accounts);  ReadBranch("mail.identity.", psvc, identities);  ReadBranch("mail.server.", psvc, servers);  ReadBranch("mail.smtpserver.", psvc, smtpservers);  ReadBranch("ldap_2.servers.", psvc, ldapservers);  ReadBranch("mailnews.labels.", psvc, labelPrefs);  // the signature file prefs may be paths to files in the seamonkey profile path  // so we need to copy them over and fix these paths up before we write them out to the new prefs.js  CopySignatureFiles(identities, psvc);  // certain mail prefs may actually be absolute paths instead of profile relative paths  // we need to fix these paths up before we write them out to the new prefs.js  CopyMailFolders(servers, psvc);  CopyAddressBookDirectories(ldapservers, psvc);  // Now that we have all the pref data in memory, load the target pref file,  // and write it back out  psvc->ResetPrefs();  for (transform = gTransforms; transform < end; ++transform)    transform->prefSetterFunc(transform, branch);  WriteBranch("mail.account.", psvc, accounts);  WriteBranch("mail.identity.", psvc, identities);  WriteBranch("mail.server.", psvc, servers);  WriteBranch("mail.smtpserver.", psvc, smtpservers);  WriteBranch("ldap_2.servers.", psvc, ldapservers);  WriteBranch("mailnews.labels.", psvc, labelPrefs);  delete accounts;  delete identities;  delete servers;  delete smtpservers;  delete ldapservers;  delete labelPrefs;  nsCOMPtr<nsIFile> targetPrefsFile;  mTargetProfile->Clone(getter_AddRefs(targetPrefsFile));  targetPrefsFile->Append(aTargetPrefFileName);  psvc->SavePrefFile(targetPrefsFile);  return NS_OK;}nsresult nsSeamonkeyProfileMigrator::CopyAddressBookDirectories(nsVoidArray* aLdapServers, nsIPrefService* aPrefService){  // each server has a pref ending with .filename. The value of that pref points to a profile which we  // need to migrate.  nsAutoString index;  index.AppendInt(nsIMailProfileMigrator::ADDRESSBOOK_DATA);   NOTIFY_OBSERVERS(MIGRATION_ITEMBEFOREMIGRATE, index.get());  PRUint32 count = aLdapServers->Count();  for (PRUint32 i = 0; i < count; ++i)   {    PrefBranchStruct* pref = (PrefBranchStruct*) aLdapServers->ElementAt(i);    nsDependentCString prefName (pref->prefName);    if (StringEndsWith(prefName, nsDependentCString(".filename")))    {      // should we be assuming utf-8 or ascii here?      CopyFile(NS_ConvertUTF8toUCS2(pref->stringValue), NS_ConvertUTF8toUCS2(pref->stringValue));     }    // we don't need to do anything to the fileName pref itself  }  NOTIFY_OBSERVERS(MIGRATION_ITEMAFTERMIGRATE, index.get());  return NS_OK;}nsresult nsSeamonkeyProfileMigrator::CopySignatureFiles(nsVoidArray* aIdentities, nsIPrefService* aPrefService){  nsresult rv = NS_OK;  PRUint32 count = aIdentities->Count();  for (PRUint32 i = 0; i < count; ++i)   {    PrefBranchStruct* pref = (PrefBranchStruct*)aIdentities->ElementAt(i);    nsDependentCString prefName (pref->prefName);    // a partial fix for bug #255043    // if the user's signature file from seamonkey lives in the     // seamonkey profile root, we'll copy it over to the new     // thunderbird profile root and thenn set the pref to the new value    // note, this doesn't work for multiple signatures that live    // below the seamonkey profile root    if (StringEndsWith(prefName, nsDependentCString(".sig_file")))    {      // turn the pref into a nsILocalFile      nsCOMPtr<nsILocalFile> srcSigFile = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID);      srcSigFile->SetPersistentDescriptor(nsDependentCString(pref->stringValue));      nsCOMPtr<nsIFile> targetSigFile;      rv = mTargetProfile->Clone(getter_AddRefs(targetSigFile));      NS_ENSURE_SUCCESS(rv, rv);       // now make the copy      PRBool exists;       srcSigFile->Exists(&exists);      if (exists)      {        nsAutoString leafName;        srcSigFile->GetLeafName(leafName);        srcSigFile->CopyTo(targetSigFile,leafName); // will fail if we've already copied a sig file here        targetSigFile->Append(leafName);        // now write out the new descriptor        nsCAutoString descriptorString;        nsCOMPtr<nsILocalFile> localFile = do_QueryInterface(targetSigFile);        localFile->GetPersistentDescriptor(descriptorString);        nsCRT::free(pref->stringValue);        pref->stringValue = ToNewCString(descriptorString);      }       }  }  return NS_OK;}nsresult nsSeamonkeyProfileMigrator::CopyMailFolders(nsVoidArray* aMailServers, nsIPrefService* aPrefService){  // Each server has a .directory pref which points to the location of the mail data  // for that server. We need to do two things for that case...  // (1) Fix up the directory path for the new profile  // (2) copy the mail folder data from the source directory pref to the destination directory pref  nsresult rv = NS_OK;  PRUint32 count = aMailServers->Count();  for (PRUint32 i = 0; i < count; ++i)   {    PrefBranchStruct* pref = (PrefBranchStruct*)aMailServers->ElementAt(i);    nsDependentCString prefName (pref->prefName);    if (StringEndsWith(prefName, nsDependentCString(".directory")))    {      // let's try to get a branch for this particular server to simplify things

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品中文字幕一区二区三区 | 91精品国产综合久久精品| 这里是久久伊人| 中文字幕亚洲欧美在线不卡| 男人的j进女人的j一区| 成人黄色小视频| 日韩女优制服丝袜电影| 亚洲国产一区二区三区| av在线不卡网| 久久久亚洲综合| 亚洲.国产.中文慕字在线| 高清在线成人网| 欧美xfplay| 日韩不卡手机在线v区| 欧美亚洲一区二区在线观看| 国产精品日产欧美久久久久| 精品一区二区三区影院在线午夜| 欧美亚洲一区三区| 亚洲一区二区三区四区中文字幕| 成人综合婷婷国产精品久久免费| 精品国产乱码久久| 石原莉奈一区二区三区在线观看| 91成人在线精品| 国产精品久久看| 国产乱码一区二区三区| 欧美情侣在线播放| 玉足女爽爽91| 在线观看日韩精品| 亚洲欧美视频在线观看视频| 国产一区二区三区日韩| 欧美精品99久久久**| 亚洲国产日韩综合久久精品| 欧美伊人久久久久久久久影院 | 欧美一级在线视频| 日韩中文字幕不卡| 91精品国产综合久久蜜臀| 午夜精品久久久久久久久| 欧美三级乱人伦电影| 亚洲午夜一区二区三区| 欧美日韩免费高清一区色橹橹| 一区二区激情小说| 91麻豆精品国产91久久久久久久久| 亚洲国产视频在线| 日韩欧美一级精品久久| 久草精品在线观看| 中文字幕久久午夜不卡| 99国产精品久| 亚洲第一成人在线| 久久这里都是精品| 91在线视频网址| 亚洲国产视频一区二区| 欧美va日韩va| 成人免费视频播放| 亚洲妇熟xx妇色黄| 久久综合九色综合97_久久久| 国产成人亚洲综合a∨婷婷图片| 亚洲欧洲另类国产综合| 欧美日韩视频一区二区| 激情久久五月天| 综合网在线视频| 91精品啪在线观看国产60岁| 国产一本一道久久香蕉| 一级做a爱片久久| 91麻豆精品国产综合久久久久久| 久久精品国产久精国产| 亚洲欧洲精品一区二区三区| 精品视频1区2区| 国产剧情av麻豆香蕉精品| 亚洲精品成人精品456| 日韩欧美资源站| 色综合久久综合中文综合网| 免费成人在线播放| 一区二区三区资源| 久久久精品综合| 91精品国产综合久久久久| 国产91精品精华液一区二区三区 | 国产精品69久久久久水密桃| 亚洲精品成人少妇| 国产性天天综合网| 欧美美女直播网站| 99视频精品在线| 国产一区在线视频| 亚洲成av人片在线| 亚洲欧美另类小说| 久久久国产午夜精品| 91精品国产综合久久久久久久久久| 波多野结衣中文字幕一区 | 亚洲国产精品嫩草影院| 久久久综合视频| 欧美成人一区二区三区片免费| 色哟哟一区二区三区| 国内精品伊人久久久久影院对白| 亚洲国产乱码最新视频 | 久久丁香综合五月国产三级网站| 亚洲精品中文字幕在线观看| 久久久亚洲高清| 欧美大片免费久久精品三p| 欧美特级限制片免费在线观看| 波多野结衣亚洲| 国产成a人无v码亚洲福利| 经典三级一区二区| 美女脱光内衣内裤视频久久影院| 夜夜爽夜夜爽精品视频| 亚洲你懂的在线视频| 国产精品久久精品日日| 国产午夜精品久久久久久免费视| 欧美电视剧在线看免费| 欧美一级黄色录像| 日韩欧美你懂的| 欧美一区二区在线不卡| 欧美电影一区二区| 欧美日韩视频专区在线播放| 在线精品视频小说1| 在线视频观看一区| 在线亚洲人成电影网站色www| av不卡免费电影| 99在线精品观看| 99国产精品久久久久久久久久久| www.在线欧美| 色婷婷久久久亚洲一区二区三区| 91麻豆文化传媒在线观看| 91久久精品一区二区二区| 欧美写真视频网站| 欧美一级二级在线观看| 精品国产免费人成在线观看| 久久影院电视剧免费观看| 久久精品夜色噜噜亚洲a∨| 国产午夜精品理论片a级大结局| 国产色91在线| 亚洲乱码国产乱码精品精的特点 | 亚洲成人三级小说| 日韩主播视频在线| 精油按摩中文字幕久久| 国产精品白丝av| 99在线精品观看| 欧美日韩高清一区二区三区| 欧美一区二区三区精品| 国产三级精品三级在线专区| 国产精品久久久久久久久动漫| 一区二区三区在线视频免费观看| 亚洲午夜久久久| 黑人巨大精品欧美黑白配亚洲| 国产电影精品久久禁18| 91国在线观看| 精品久久久久久久久久久久久久久 | 亚洲成av人片一区二区梦乃| 青娱乐精品视频| 国产91丝袜在线18| 欧美三级乱人伦电影| 久久亚洲精品小早川怜子| 国产精品久久久久久久第一福利| 亚洲成人精品影院| 国产成人综合网| 欧美日韩一区中文字幕| 久久亚洲综合色| 亚洲一二三专区| 国产一区二区视频在线播放| 一本到不卡免费一区二区| 日韩欧美一级二级三级久久久| 亚洲三级在线看| 老司机午夜精品| 色先锋资源久久综合| 久久久综合激的五月天| 亚欧色一区w666天堂| 丁香婷婷综合色啪| 日韩一区二区在线播放| 一区二区三区在线看| 成人综合日日夜夜| 精品国产伦一区二区三区观看体验| 亚洲精品乱码久久久久久| 韩国女主播成人在线观看| 欧美日韩一区 二区 三区 久久精品 | 欧美色图12p| 国产精品电影一区二区三区| 蜜桃av一区二区在线观看| 在线观看不卡一区| 国产精品视频九色porn| 国产一区福利在线| 欧美日本一道本| 午夜国产精品影院在线观看| 99久久久国产精品免费蜜臀| 亚洲精品一线二线三线| 男女视频一区二区| 在线观看免费一区| 亚洲激情图片一区| 一本久久精品一区二区| 亚洲欧美日韩国产成人精品影院| 成人午夜电影久久影院| 精品久久免费看| 精品一区二区成人精品| 91精选在线观看| 亚洲成av人影院| 欧美性色黄大片| 亚洲综合清纯丝袜自拍| 91免费版在线| 亚洲欧美日本韩国| 在线观看亚洲精品| 亚洲超碰精品一区二区| 欧美优质美女网站| 香港成人在线视频|