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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? nsdogbertprofilemigrator.cpp

?? 現(xiàn)在很火的郵件客戶端軟件thunderbird的源碼
?? CPP
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
    nsCOMPtr<nsIFileSpec> oldSubPath;    NS_NewFileSpec(getter_AddRefs(oldSubPath));    oldSubPath->FromFileSpec(oldPath);    rv = oldSubPath->AppendRelativeUnixPath(fileOrDirName);    if (NS_FAILED(rv)) return rv;    PRBool exist;    rv = oldSubPath->Exists(&exist);    if (NS_FAILED(rv)) return rv;    if (!exist)    {      rv = oldSubPath->CreateDir();      if (NS_FAILED(rv)) return rv;    }    nsCOMPtr<nsIFileSpec> newSubPath;    NS_NewFileSpec(getter_AddRefs(newSubPath));    newSubPath->FromFileSpec(newPath);    rv = newSubPath->AppendRelativeUnixPath(fileOrDirName);    if (NS_FAILED(rv)) return rv;    rv = newSubPath->Exists(&exist);    if (NS_FAILED(rv)) return rv;    if (!exist)    {      rv = newSubPath->CreateDir();      if (NS_FAILED(rv)) return rv;    }    DoTheCopy(oldSubPath, newSubPath, PR_TRUE);  }  else  {    nsCOMPtr<nsIFileSpec> file;    NS_NewFileSpec(getter_AddRefs(file));    file->FromFileSpec(oldPath);    rv = file->AppendRelativeUnixPath(fileOrDirName);    if( NS_FAILED(rv) ) return rv;    PRBool exist;    rv = file->Exists(&exist);    if( NS_FAILED(rv) ) return rv;    if( exist) {      // convert back to nsFileSpec      nsFileSpec oldPath;      nsFileSpec newPathSpec;      file->GetFileSpec(&oldPath);      newPath->GetFileSpec(&newPathSpec);      AddFileCopyToList(&oldPath, &newPathSpec, "");    }  }  return rv;}/*---------------------------------------------------------------------------- * DoSpecialUpdates updates is a routine that does some miscellaneous updates  * like renaming certain files, etc. *--------------------------------------------------------------------------*/nsresult nsDogbertProfileMigrator::DoSpecialUpdates(nsIFileSpec  * profilePath){  nsresult rv;  PRInt32 serverType;  nsFileSpec fs;  rv = profilePath->GetFileSpec(&fs);  if (NS_FAILED(rv)) return rv;    fs += PREF_FILE_NAME_IN_5x;    nsOutputFileStream fsStream(fs, (PR_WRONLY | PR_CREATE_FILE | PR_APPEND));    if (!fsStream.is_open())  {    return NS_ERROR_FAILURE;  }  /* Need to add a string to the top of the prefs.js file to prevent it   * from being loaded as a standard javascript file which would be a   * security hole.   */  fsStream << PREF_FILE_HEADER_STRING << nsEndl ;  fsStream.close();      /* Create the new mail directory from the setting in prefs.js or a default */  rv = mPrefs->GetIntPref(PREF_MAIL_SERVER_TYPE, &serverType);  if (NS_FAILED(rv)) return rv;   if (serverType == POP_4X_MAIL_TYPE) {	rv = RenameAndMove4xPopFilterFile(profilePath);  	if (NS_FAILED(rv)) return rv; 	rv = RenameAndMove4xPopStateFile(profilePath);  	if (NS_FAILED(rv)) return rv;   }#ifdef IMAP_MAIL_FILTER_FILE_NAME_FORMAT_IN_4x   else if (serverType == IMAP_4X_MAIL_TYPE) {  	rv = RenameAndMove4xImapFilterFiles(profilePath);	if (NS_FAILED(rv)) return rv;  }#endif /* IMAP_MAIL_FILTER_FILE_NAME_FORMAT_IN_4x */  return rv;}nsresult nsDogbertProfileMigrator::RenameAndMove4xPopFilterFile(nsIFileSpec * profilePath){  return RenameAndMove4xPopFile(profilePath, POP_MAIL_FILTER_FILE_NAME_IN_4x, POP_MAIL_FILTER_FILE_NAME_IN_5x);}nsresult nsDogbertProfileMigrator::RenameAndMove4xPopStateFile(nsIFileSpec * profilePath){#ifdef POPSTATE_FILE_IN_4x  return RenameAndMove4xPopFile(profilePath, POPSTATE_FILE_IN_4x, POPSTATE_FILE_IN_5x);#else   // on windows, popstate.dat was in Users\<profile>\MAIL\popstate.dat  // which is the right place, unlike linux and mac.  // so, when we migrate Users\<profile>\Mail to Users50\<profile>\Mail\<hostname>  // it just works  return NS_OK;#endif /* POPSTATE_FILE_IN_4x */}nsresult nsDogbertProfileMigrator::RenameAndMove4xPopFile(nsIFileSpec * profilePath, const char *fileNameIn4x, const char *fileNameIn5x){  nsFileSpec file;  nsresult rv = profilePath->GetFileSpec(&file);  if (NS_FAILED(rv)) return rv;    // we assume the 4.x pop files live at <profile>/<fileNameIn4x>  file += fileNameIn4x;  // figure out where the 4.x pop mail directory got copied to  char *popServerName = nsnull;  nsFileSpec migratedPopDirectory;  rv = profilePath->GetFileSpec(&migratedPopDirectory);  migratedPopDirectory += NEW_MAIL_DIR_NAME;  mPrefs->CopyCharPref(PREF_NETWORK_HOSTS_POP_SERVER, &popServerName);  migratedPopDirectory += popServerName;  PR_FREEIF(popServerName);  // copy the 4.x file from <profile>/<fileNameIn4x> to the <profile>/Mail/<hostname>/<fileNameIn4x>  rv = file.CopyToDir(migratedPopDirectory);  NS_ASSERTION(NS_SUCCEEDED(rv),"failed to copy pop file");    // XXX todo, delete the old file  // we are leaving it behind    // make migratedPopDirectory point the the copied filter file,  // <profile>/Mail/<hostname>/<fileNameIn4x>  migratedPopDirectory += fileNameIn4x;  // rename <profile>/Mail/<hostname>/<fileNameIn4x>to <profile>/Mail/<hostname>/<fileNameIn5x>, if necessary  if (PL_strcmp(fileNameIn4x,fileNameIn5x)) {	  migratedPopDirectory.Rename(fileNameIn5x);  }  return NS_OK;}#ifdef IMAP_MAIL_FILTER_FILE_NAME_FORMAT_IN_4x#define BUFFER_LEN	128nsresult nsDogbertProfileMigrator::RenameAndMove4xImapFilterFile(nsIFileSpec * profilePath, const char *hostname){  nsresult rv = NS_OK;  char imapFilterFileName[BUFFER_LEN];  // the 4.x imap filter file lives in "<profile>/<hostname> Rules"  nsFileSpec file;  rv = profilePath->GetFileSpec(&file);  if (NS_FAILED(rv)) return rv;    PR_snprintf(imapFilterFileName, BUFFER_LEN, IMAP_MAIL_FILTER_FILE_NAME_FORMAT_IN_4x, hostname);  file += imapFilterFileName;  // if that file didn't exist, because they didn't use filters for that server, return now  if (!file.Exists()) return NS_OK;  // figure out where the 4.x pop mail directory got copied to  nsFileSpec migratedImapDirectory;  rv = profilePath->GetFileSpec(&migratedImapDirectory);  migratedImapDirectory += NEW_IMAPMAIL_DIR_NAME;  migratedImapDirectory += hostname;  // copy the 4.x file from "<profile>/<hostname> Rules" to <profile>/ImapMail/<hostname>/  rv = file.CopyToDir(migratedImapDirectory);  NS_ASSERTION(NS_SUCCEEDED(rv),"failed to copy imap file");  // make migratedPopDirectory point the the copied filter file,  // "<profile>/ImapMail/<hostname>/<hostname> Rules"  migratedImapDirectory += imapFilterFileName;  // rename "<profile>/ImapMail/<hostname>/<hostname> Rules" to  "<profile>/ImapMail/<hostname>/rules.dat"  migratedImapDirectory.Rename(IMAP_MAIL_FILTER_FILE_NAME_IN_5x);  return NS_OK;         }nsresult nsDogbertProfileMigrator::RenameAndMove4xImapFilterFiles(nsIFileSpec * profilePath){  nsresult rv;  char *hostList=nsnull;  rv = mPrefs->CopyCharPref(PREF_4X_NETWORK_HOSTS_IMAP_SERVER, &hostList);  if (NS_FAILED(rv)) return rv;  if (!hostList || !*hostList) return NS_OK;   char *token = nsnull;  char *rest = hostList;  nsCAutoString str;  token = nsCRT::strtok(rest, ",", &rest);  while (token && *token) {    str = token;    str.StripWhitespace();    if (!str.IsEmpty()) {      // str is the hostname      rv = RenameAndMove4xImapFilterFile(profilePath,str.get());      if  (NS_FAILED(rv)) {        // failed to migrate.  bail.        return rv;      }      str = "";    }    token = nsCRT::strtok(rest, ",", &rest);  }  PR_FREEIF(hostList);  return NS_OK;    }#endif /* IMAP_MAIL_FILTER_FILE_NAME_FORMAT_IN_4x */nsresultnsDogbertProfileMigrator::Rename4xFileAfterMigration(nsIFileSpec * profilePath, const char *oldFileName, const char *newFileName){  nsresult rv = NS_OK;  // if they are the same, don't bother to rename the file.  if (PL_strcmp(oldFileName, newFileName) == 0) {    return rv;  }                 nsFileSpec file;  rv = profilePath->GetFileSpec(&file);  if (NS_FAILED(rv)) return rv;    file += oldFileName;    // make sure it exists before you try to rename it  if (file.Exists()) {    file.Rename(newFileName);  }  return rv;}#ifdef NEED_TO_COPY_AND_RENAME_NEWSRC_FILESnsresult nsDogbertProfileMigrator::GetPremigratedFilePref(const char *pref_name, nsIFileSpec **path){  nsresult rv;  if (!pref_name) return NS_ERROR_FAILURE;  char premigration_pref[MAX_PREF_LEN];  PR_snprintf(premigration_pref,MAX_PREF_LEN,"%s%s",PREMIGRATION_PREFIX,pref_name);  rv = mPrefs->GetFilePref((const char *)premigration_pref, path);  return rv;}#endif /* NEED_TO_COPY_AND_RENAME_NEWSRC_FILES */nsresult nsDogbertProfileMigrator::DetermineOldPath(nsIFileSpec *profilePath, const char *oldPathName, const char *oldPathEntityName, nsIFileSpec *oldPath){	nsresult rv;  	/* set oldLocalFile to profilePath.  need to convert nsIFileSpec->nsILocalFile */	nsCOMPtr<nsILocalFile> oldLocalFile;	nsFileSpec pathSpec;	profilePath->GetFileSpec(&pathSpec);	rv = NS_FileSpecToIFile(&pathSpec, getter_AddRefs(oldLocalFile));	if (NS_FAILED(rv)) return rv;		/* get the string bundle, and get the appropriate localized string out of it */	nsCOMPtr<nsIStringBundleService> bundleService = do_GetService(kStringBundleServiceCID, &rv);	if (NS_FAILED(rv)) return rv;  nsCOMPtr<nsIStringBundle> bundle;  rv = bundleService->CreateBundle(MIGRATION_PROPERTIES_URL, getter_AddRefs(bundle));	if (NS_FAILED(rv)) return rv;	nsXPIDLString localizedDirName;	nsAutoString entityName;	entityName.AssignWithConversion(oldPathEntityName);	rv = bundle->GetStringFromName(entityName.get(), getter_Copies(localizedDirName));	if (NS_FAILED(rv)) return rv;	rv = oldLocalFile->AppendRelativePath(localizedDirName);	if (NS_FAILED(rv)) return rv;	PRBool exists = PR_FALSE;	rv = oldLocalFile->Exists(&exists);	if (!exists) {		/* if the localized name doesn't exist, use the english name */		rv = oldPath->FromFileSpec(profilePath);		if (NS_FAILED(rv)) return rv;				rv = oldPath->AppendRelativeUnixPath(oldPathName);		if (NS_FAILED(rv)) return rv;				return NS_OK;	}	/* at this point, the folder with the localized name exists, so use it */	nsCAutoString persistentDescriptor;	rv = oldLocalFile->GetPersistentDescriptor(persistentDescriptor);	if (NS_FAILED(rv)) return rv;	rv = oldPath->SetPersistentDescriptorString(persistentDescriptor.get());	if (NS_FAILED(rv)) return rv;	return NS_OK;}nsresult nsDogbertProfileMigrator::ConvertPersistentStringToFileSpec(const char *str, nsIFileSpec *path){	nsresult rv;	if (!str || !path) return NS_ERROR_NULL_POINTER;		rv = path->SetPersistentDescriptorString(str);	return rv;}/*--------------------------------------------------------------------------------- * GetSizes reads the 4.x files in the profile tree and accumulates their sizes *--------------------------------------------------------------------------------*/nsresult nsDogbertProfileMigrator::GetSizes(nsFileSpec inputPath, PRBool readSubdirs, PRUint32 *sizeTotal){  char* folderName;  nsCAutoString fileOrDirNameStr;  for (nsDirectoryIterator dir(inputPath, PR_FALSE); dir.Exists(); dir++)  {    nsFileSpec fileOrDirName = dir.Spec();    folderName = fileOrDirName.GetLeafName();    fileOrDirNameStr.Assign(folderName);    if (nsCStringEndsWith(fileOrDirNameStr, MAIL_SUMMARY_SUFFIX_IN_4x) || nsCStringEndsWith(fileOrDirNameStr, NEWS_SUMMARY_SUFFIX_IN_4x) || nsCStringEndsWith(fileOrDirNameStr, SUMMARY_SUFFIX_IN_5x)) /* Don't copy the summary files */      continue;    else    {      if (fileOrDirName.IsDirectory())      {        if(readSubdirs)        {          GetSizes(fileOrDirName, PR_TRUE, sizeTotal); /* re-enter the GetSizes function */        }        else          continue;      }      else        *sizeTotal += fileOrDirName.GetFileSize();    }  }  return NS_OK;}/*--------------------------------------------------------------------------------- * GetDirFromPref gets a directory based on a preference set in the 4.x * preferences file, adds a 5 and resets the preference. * * INPUT:  *         oldProfilePath - the path to the old 4.x profile directory.   *                          currently only used by UNIX * *         newProfilePath - the path to the 5.0 profile directory *                          currently only used by UNIX * *         newDirName     - the leaf name of the directory in the 5.0 world that corresponds to *                          this pref.  Examples:  "Mail", "ImapMail", "News". *                          only used on UNIX. * *         pref - the pref in the "dot" format (e.g. mail.directory) * * OUTPUT: newPath - The old path with a 5 added (on mac and windows) *                   the newProfilePath + "/" + newDirName (on UNIX) *         oldPath - The old path from the pref (if any) * * * RETURNS: NS_OK if the pref was successfully pulled from the prefs file * *--------------------------------------------------------------------------------*/nsresultnsDogbertProfileMigrator::GetDirFromPref(nsIFileSpec * oldProfilePath, nsIFileSpec * newProfilePath, const char *newDirName, const char* pref, nsIFileSpec* newPath, n

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品久久人人爱 | 欧美丝袜第三区| 久久婷婷综合激情| 91视频国产资源| 另类成人小视频在线| 国产亚洲综合av| 不卡电影一区二区三区| 日韩精品国产精品| 久久久av毛片精品| 欧美乱妇23p| 97se亚洲国产综合在线| 亚洲va韩国va欧美va| 国产亚洲人成网站| 91浏览器在线视频| 国产乱国产乱300精品| 国产午夜精品一区二区三区四区| 欧美亚洲综合另类| 理论片日本一区| 日韩综合小视频| 亚洲欧美另类久久久精品2019| 一本大道久久a久久综合| 免费欧美在线视频| 亚洲电影一级黄| 精品一区二区三区久久| 91亚洲精品一区二区乱码| 欧美高清激情brazzers| 精品成人佐山爱一区二区| 国产精品色婷婷久久58| 亚洲综合自拍偷拍| 日韩av电影一区| 国产一区二区三区| 在线免费观看日韩欧美| 欧美不卡在线视频| 久久久久久电影| 一区二区在线观看视频| 麻豆91在线看| 国产福利一区在线| 欧美精选午夜久久久乱码6080| 精品国产免费久久| 一区二区三区四区乱视频| 毛片av一区二区| 成人精品免费视频| 一本色道a无线码一区v| 日韩免费看的电影| 亚洲丝袜制服诱惑| 狠狠色丁香婷婷综合久久片| 一本在线高清不卡dvd| 日韩精品中文字幕在线一区| 亚洲乱码国产乱码精品精的特点| 人人狠狠综合久久亚洲| 91麻豆精东视频| 日韩免费视频线观看| 亚洲欧美日本在线| 国产成人aaa| 9191精品国产综合久久久久久 | 精品一区二区日韩| 色香色香欲天天天影视综合网| 日韩精品中文字幕一区二区三区| 日本一区二区三区免费乱视频| 日韩精品一二三区| 一本在线高清不卡dvd| 久久久精品影视| 九九视频精品免费| 欧美丰满美乳xxx高潮www| 夜夜爽夜夜爽精品视频| 99久久精品99国产精品| 国产女同性恋一区二区| 国模娜娜一区二区三区| 精品国产乱码久久久久久蜜臀| 亚瑟在线精品视频| 欧美性生活久久| 亚洲猫色日本管| 97久久超碰精品国产| 久久精品夜色噜噜亚洲aⅴ| 国内精品国产成人| 久久人人爽爽爽人久久久| 男女激情视频一区| 日韩三级av在线播放| 久久精品国产久精国产| 精品国产乱码久久久久久夜甘婷婷| 麻豆精品精品国产自在97香蕉 | 欧美变态tickle挠乳网站| 日本亚洲电影天堂| 欧美tickle裸体挠脚心vk| 久久精品999| 国产亚洲成av人在线观看导航 | 亚洲欧美电影院| 91亚洲精华国产精华精华液| 亚洲欧美在线高清| 欧美三片在线视频观看| 三级不卡在线观看| 26uuu亚洲综合色| 国产激情91久久精品导航| 国产精品久久久久影院色老大| 99精品在线免费| 性做久久久久久免费观看| 精品日本一线二线三线不卡| 国产精品18久久久久久久网站| 国产精品污www在线观看| 99久久精品免费| 亚洲综合999| 欧美成人激情免费网| 成人黄色国产精品网站大全在线免费观看| 国产精品短视频| 制服丝袜亚洲色图| 成人免费电影视频| 天天av天天翘天天综合网色鬼国产| 日韩一区二区三区四区五区六区| 久久成人免费网站| 亚洲欧美一区二区在线观看| 91精品国产乱| 国产一区二区剧情av在线| 亚洲精选免费视频| 欧美三区免费完整视频在线观看| 久久草av在线| 亚洲人妖av一区二区| 日韩一区二区三区四区| 国产成+人+日韩+欧美+亚洲| 国产精品麻豆一区二区| 3atv一区二区三区| 色婷婷精品大视频在线蜜桃视频| 久久av资源网| 亚洲国产欧美在线人成| 国产欧美日韩在线看| 日韩一区二区影院| 欧美视频日韩视频| 99精品国产视频| 激情另类小说区图片区视频区| 亚洲国产精品久久人人爱| 中文字幕国产精品一区二区| 欧美一级日韩不卡播放免费| 在线免费亚洲电影| caoporn国产精品| 国产乱子伦视频一区二区三区| 午夜精品久久久久久久蜜桃app| 国产精品久久久久久亚洲伦| 久久亚洲综合av| 欧美一区二区三区白人| 欧美日韩在线播放三区| 一本色道久久综合亚洲精品按摩| 国产成人夜色高潮福利影视| 麻豆精品一区二区三区| 日韩成人精品视频| 日韩精品1区2区3区| 国产欧美精品一区二区三区四区| 成人app软件下载大全免费| 国产不卡在线一区| 国产成人亚洲综合a∨猫咪 | 欧美激情一区在线| 精品蜜桃在线看| 91麻豆精品国产91久久久 | 久久er99精品| 精品制服美女久久| 另类中文字幕网| 激情文学综合网| 国产精品99久久久久久久vr| 久久99精品一区二区三区三区| 毛片基地黄久久久久久天堂| 欧美aa在线视频| 激情六月婷婷久久| 国产福利精品导航| proumb性欧美在线观看| 成人av片在线观看| 国产精品白丝jk黑袜喷水| 国产传媒日韩欧美成人| 99久久精品免费看国产| 91福利社在线观看| 91精品国产综合久久福利| 欧美成人vr18sexvr| 国产欧美日韩在线看| 亚洲视频 欧洲视频| 777久久久精品| 日韩精品自拍偷拍| 国产婷婷色一区二区三区| 亚洲欧美日韩电影| 日韩精品成人一区二区三区| 久久se这里有精品| 成人精品在线视频观看| 在线观看国产一区二区| 欧美老肥妇做.爰bbww| 337p日本欧洲亚洲大胆精品| 久久综合九色综合欧美就去吻| 欧美国产综合一区二区| 亚洲欧美另类综合偷拍| 久久国产精品第一页| 成人妖精视频yjsp地址| 欧美亚洲动漫另类| 欧美本精品男人aⅴ天堂| 久久天天做天天爱综合色| 亚洲欧美偷拍三级| 久久99久久99小草精品免视看| 91免费观看国产| 日韩欧美高清dvd碟片| 亚洲视频资源在线| 激情深爱一区二区| 欧美性极品少妇| 国产精品区一区二区三| 裸体一区二区三区| 欧洲生活片亚洲生活在线观看| 26uuu国产一区二区三区|