Skip to content

Instantly share code, notes, and snippets.

@yajd
Last active August 29, 2015 14:01
Show Gist options
  • Save yajd/ed58adda53d5ef513c1f to your computer and use it in GitHub Desktop.
Save yajd/ed58adda53d5ef513c1f to your computer and use it in GitHub Desktop.
_ff-addon-snippet-SpecialDirPaths -
var DSP = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
var keywords = [];
var str = [];
function doit() {
for (var i=0; i<keywords.length; i++) {
str.push('Keyword: "' + keywords[i] + '"');
try {
var methodFU = FileUtils.getFile(keywords[i], ['']);
str[str.length-1] += '|FU = "' + methodFU.path + '"';
} catch(ex) {
str[str.length-1] += '|FU = "' + ex.message + '"';
}
try {
var methodDS = DSP.get(keywords[i], Ci.nsIFile);
str[str.length-1] += '|DS = "' + methodDS.path + '"';
} catch(ex) {
str[str.length-1] += '|DS = "' + ex.message + '"';
}
}
console.log(str.join('\n'));
}
var keywords = [
//http://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsAppDirectoryServiceDefs.h
'AppRegF',
'AppRegD',
'DefRt',
'PrfDef',
'current',
'default',
'DefProfRt',
'DefProfLRt',
'ARes',
'AChrom',
'APlugns',
'SrchPlugns',
'AChromDL',
'APluginsDL',
'SrchPluginsDL',
'SHARED',
'PrefD',
'PrefF',
'MetroPrefF',
'PrefDL',
'ExtPrefDL',
'PrefDOverride',
'ProfD',
'ProfLD',
'UChrm',
'UsrSrchPlugns',
'LclSt',
'UPnls',
'UMimTyp',
'cachePDir',
'BMarks',
'DLoads',
'SrchF',
'XPIClnupD',
'indexedDBPDir',
'permissionDBPDir',
//http://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsDirectoryServiceDefs.h
'Home',
'TmpD',
'CurWorkD',
'Home',
'Desk',
'CurProcD',
'XCurProcD',
'XpcomLib',
'GreD',
'SysD',
'Trsh',
'Strt',
'Shdwn',
'ApplMenu',
'CntlPnl',
'Exts',
'Fnts',
'Prfs',
'Docs',
'ISrch',
'DfltDwnld',
'ULibDir',
'UsrDsk',
'LocDsk',
'UsrApp',
'LocApp',
'UsrDocs',
'LocDocs',
'UsrIntrntPlgn',
'LoclIntrntPlgn',
'UsrFrmwrks',
'LocFrmwrks',
'UsrPrfs',
'LocPrfs',
'Pct',
'Mov',
'Music',
'IntrntSts',
'WinD',
'ProgF',
'DeskV',
'Progs',
'Cntls',
'Prnts',
'Pers',
'Favs',
'Strt',
'Rcnt',
'SndTo',
'Buckt',
'Strt',
'DeskP',
'Drivs',
'NetW',
'netH',
'Fnts',
'Tmpls',
'CmStrt',
'CmPrgs',
'CmStrt',
'CmDeskP',
'CmAppData',
'AppData',
'LocalAppData',
'PrntHd',
'CookD',
'DfltDwnld',
'Docs',
'Pict',
'Music',
'Vids',
'Locl',
'LibD',
'XDGDesk',
'XDGDocs',
'XDGDwnld',
'XDGMusic',
'XDGPict',
'XDGPubSh',
'XDGTempl',
'XDGVids',
'DfltDwnld',
'DrvD',
//http://mxr.mozilla.org/mozilla-release/source/toolkit/mozapps/update/nsUpdateService.js#76
'GreD',
'UpdRootD',
'XREExeF',
//http://mxr.mozilla.org/mozilla-release/source/toolkit/mozapps/update/tests/shared.js#55
'ProfDS',
'ProfD',
'GreD',
'XCurProcD',
'XREExeF',
'UpdRootD',
//http://mxr.mozilla.org/mozilla-release/source/xpcom/build/nsXULAppAPI.h
'UAppData',
'XREExtDL',
'XREExeF',
'started',
'ProfDS',
'started',
'ProfLDS',
'XRESysLExtPD',
'XRESysSExtPD',
'XREUSysExt',
'XREAppDist',
'UpdRootD',
'UpdArchD',
'OSUpdApplyToD'
];
doit();
@yajd
Copy link
Author

yajd commented May 10, 2014

algorithm to find which keys should contain same, trying to ident portable vs non-portable

var arr = str.split('|||||');
var marr = {};
for (var i=0; i<arr.length; i++) {
    var sp = arr[i].split(',');
    if (sp.length != 4) {
        console.warn('at i is not expecting split length', sp);
    } else {
       if (!marr[sp[3]]) {
           marr[sp[3]] = {};
       }
       marr[sp[3]][sp[0]] = sp[2]
    }
}

var names = {};
var totalKeys = 0;
for (var n in marr) {
    names[n] = Object.keys(marr[n]).length;
    if (totalKeys > 0 && totalKeys != names[n]) {
        alert('error: keys in this different from others, name = ' + n)
    }
    totalKeys = names[n];
}
console.log(names);
console.log(marr);
var sims = {}; //holds keys of names. in each one is an object which holds key which is a string of joined keywords that its value was contained in
for (var n in marr) {
    for (var p in marr[n]) {
        for (var p2 in marr[n]) {
            if (p2 == p) { continue }
            if (marr[n][p2].indexOf(marr[n][p]) > -1) {
                if (!sims[n]) {
                    sims[n] = {};
                }
                if (!sims[n][p]) {
                    sims[n][p] = [];
                }
                sims[n][p].push(p2);
            }
        }
    }
}
console.log('sims', sims)

var diffs = {};
for (var n in marr) {
    diffs[n] = {};
    for (var i=0; i<totalKeys; i++) {
        if ()
    }
}

@Noitidart
Copy link

Uses regexes: ^.*?"(.*?)".*?$, ^((?!\#define).)*$, ^((?!".*?").)*$
http://mxr.mozilla.org/mozilla-central/source/xpcom/build/nsXULAppAPI.h

7 #define _nsXULAppAPI_h__
50 #define XRE_USER_APP_DATA_DIR "UAppData"
60 #define XRE_EXTENSIONS_DIR_LIST "XREExtDL"
67 #define XRE_EXECUTABLE_FILE "XREExeF"
78 #define NS_APP_PROFILE_DIR_STARTUP "ProfDS"
89 #define NS_APP_PROFILE_LOCAL_DIR_STARTUP "ProfLDS"
96 #define XRE_SYS_LOCAL_EXTENSION_PARENT_DIR "XRESysLExtPD"
105 #define XRE_SYS_SHARE_EXTENSION_PARENT_DIR "XRESysSExtPD"
111 #define XRE_USER_SYS_EXTENSION_DIR "XREUSysExt"
117 #define XRE_APP_DISTRIBUTION_DIR "XREAppDist"
127 #define XRE_UPDATE_ROOT_DIR "UpdRootD"
135 #define XRE_UPDATE_ARCHIVE_DIR "UpdArchD"
142 #define XRE_OS_UPDATE_APPLY_TO_DIR "OSUpdApplyToD"
150 #define XRE_MAIN_FLAG_USE_METRO 0x01

From: http://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsAppDirectoryServiceDefs.h

#define nsAppDirectoryServiceDefs_h___
#define NS_APP_APPLICATION_REGISTRY_FILE        "AppRegF"
#define NS_APP_APPLICATION_REGISTRY_DIR         "AppRegD"
#define NS_APP_DEFAULTS_50_DIR                  "DefRt"         // The root dir of all defaults dirs
#define NS_APP_PREF_DEFAULTS_50_DIR             "PrfDef"
#define NS_APP_PROFILE_DEFAULTS_50_DIR          "profDef"       // The profile defaults of the "current"
#define NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR     "ProfDefNoLoc"  // The profile defaults of the "default"
#define NS_APP_USER_PROFILES_ROOT_DIR           "DefProfRt"     // The dir where user profile dirs live.
#define NS_APP_USER_PROFILES_LOCAL_ROOT_DIR     "DefProfLRt"  // The dir where user profile temp dirs live.
#define NS_APP_RES_DIR                          "ARes"
#define NS_APP_CHROME_DIR                       "AChrom"
#define NS_APP_PLUGINS_DIR                      "APlugns"       // Deprecated - use NS_APP_PLUGINS_DIR_LIST
#define NS_APP_SEARCH_DIR                       "SrchPlugns"
#define NS_APP_CHROME_DIR_LIST                  "AChromDL"
#define NS_APP_PLUGINS_DIR_LIST                 "APluginsDL"
#define NS_APP_SEARCH_DIR_LIST                  "SrchPluginsDL"
#define NS_SHARED                               "SHARED"
#define NS_APP_PREFS_50_DIR                     "PrefD"         // Directory which contains user prefs       
#define NS_APP_PREFS_50_FILE                    "PrefF"
#define NS_METRO_APP_PREFS_50_FILE              "MetroPrefF"    // Metro browser prefs file
#define NS_APP_PREFS_DEFAULTS_DIR_LIST          "PrefDL"
#define NS_EXT_PREFS_DEFAULTS_DIR_LIST          "ExtPrefDL"
#define NS_APP_PREFS_OVERRIDE_DIR               "PrefDOverride" // Directory for per-profile defaults
#define NS_APP_USER_PROFILE_50_DIR              "ProfD"
#define NS_APP_USER_PROFILE_LOCAL_50_DIR        "ProfLD"
#define NS_APP_USER_CHROME_DIR                  "UChrm"
#define NS_APP_USER_SEARCH_DIR                  "UsrSrchPlugns"
#define NS_APP_LOCALSTORE_50_FILE               "LclSt"
#define NS_APP_USER_PANELS_50_FILE              "UPnls"
#define NS_APP_USER_MIMETYPES_50_FILE           "UMimTyp"
#define NS_APP_CACHE_PARENT_DIR                 "cachePDir"
#define NS_APP_BOOKMARKS_50_FILE                "BMarks"
#define NS_APP_DOWNLOADS_50_FILE                "DLoads"
#define NS_APP_SEARCH_50_FILE                   "SrchF"
#define NS_APP_INSTALL_CLEANUP_DIR              "XPIClnupD"  //location of xpicleanup.dat xpicleanup.exe 
#define NS_APP_INDEXEDDB_PARENT_DIR             "indexedDBPDir"
#define NS_APP_PERMISSION_PARENT_DIR            "permissionDBPDir"

http://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsDirectoryServiceDefs.h

#define nsDirectoryServiceDefs_h___
#define NS_OS_HOME_DIR                          "Home"
#define NS_OS_TEMP_DIR                          "TmpD"
#define NS_OS_CURRENT_WORKING_DIR               "CurWorkD"
#define NS_OS_DESKTOP_DIR                       "Desk"
#define NS_OS_CURRENT_PROCESS_DIR               "CurProcD"
#define NS_XPCOM_CURRENT_PROCESS_DIR            "XCurProcD"
#define NS_XPCOM_LIBRARY_FILE                   "XpcomLib"
#define NS_GRE_DIR                              "GreD"
#define NS_GRE_BIN_DIR                          "GreBinD"
    #define NS_OS_SYSTEM_DIR                    "SysD"
  #define NS_MAC_DESKTOP_DIR                  NS_OS_DESKTOP_DIR
  #define NS_MAC_TRASH_DIR                    "Trsh"
  #define NS_MAC_STARTUP_DIR                  "Strt"
  #define NS_MAC_SHUTDOWN_DIR                 "Shdwn"
  #define NS_MAC_APPLE_MENU_DIR               "ApplMenu"
  #define NS_MAC_CONTROL_PANELS_DIR           "CntlPnl"
  #define NS_MAC_EXTENSIONS_DIR               "Exts"
  #define NS_MAC_FONTS_DIR                    "Fnts"
  #define NS_MAC_PREFS_DIR                    "Prfs"
  #define NS_MAC_DOCUMENTS_DIR                "Docs"
  #define NS_MAC_INTERNET_SEARCH_DIR          "ISrch"
  #define NS_OSX_HOME_DIR                     NS_OS_HOME_DIR
  #define NS_MAC_HOME_DIR                     NS_OS_HOME_DIR
  #define NS_MAC_DEFAULT_DOWNLOAD_DIR         "DfltDwnld"
  #define NS_MAC_USER_LIB_DIR                 "ULibDir"   // Only available under OS X
  #define NS_OSX_DEFAULT_DOWNLOAD_DIR         NS_MAC_DEFAULT_DOWNLOAD_DIR
  #define NS_OSX_USER_DESKTOP_DIR             "UsrDsk"
  #define NS_OSX_LOCAL_DESKTOP_DIR            "LocDsk"
  #define NS_OSX_USER_APPLICATIONS_DIR        "UsrApp"
  #define NS_OSX_LOCAL_APPLICATIONS_DIR       "LocApp"
  #define NS_OSX_USER_DOCUMENTS_DIR           "UsrDocs"
  #define NS_OSX_LOCAL_DOCUMENTS_DIR          "LocDocs"
  #define NS_OSX_USER_INTERNET_PLUGIN_DIR     "UsrIntrntPlgn"
  #define NS_OSX_LOCAL_INTERNET_PLUGIN_DIR    "LoclIntrntPlgn"
  #define NS_OSX_USER_FRAMEWORKS_DIR          "UsrFrmwrks"
  #define NS_OSX_LOCAL_FRAMEWORKS_DIR         "LocFrmwrks"
  #define NS_OSX_USER_PREFERENCES_DIR         "UsrPrfs"
  #define NS_OSX_LOCAL_PREFERENCES_DIR        "LocPrfs"
  #define NS_OSX_PICTURE_DOCUMENTS_DIR        "Pct"
  #define NS_OSX_MOVIE_DOCUMENTS_DIR          "Mov"
  #define NS_OSX_MUSIC_DOCUMENTS_DIR          "Music"
  #define NS_OSX_INTERNET_SITES_DIR           "IntrntSts"
  #define NS_WIN_WINDOWS_DIR                  "WinD"
  #define NS_WIN_PROGRAM_FILES_DIR            "ProgF"
  #define NS_WIN_HOME_DIR                     NS_OS_HOME_DIR
  #define NS_WIN_DESKTOP_DIR                  "DeskV" // virtual folder at the root of the namespace
  #define NS_WIN_PROGRAMS_DIR                 "Progs" // User start menu programs directory!
  #define NS_WIN_CONTROLS_DIR                 "Cntls"
  #define NS_WIN_PRINTERS_DIR                 "Prnts"
  #define NS_WIN_PERSONAL_DIR                 "Pers"
  #define NS_WIN_FAVORITES_DIR                "Favs"
  #define NS_WIN_STARTUP_DIR                  "Strt"
  #define NS_WIN_RECENT_DIR                   "Rcnt"
  #define NS_WIN_SEND_TO_DIR                  "SndTo"
  #define NS_WIN_BITBUCKET_DIR                "Buckt"
  #define NS_WIN_STARTMENU_DIR                "Strt"
  #define NS_WIN_DESKTOP_DIRECTORY            "DeskP" // file sys dir which physically stores objects on desktop
  #define NS_WIN_DRIVES_DIR                   "Drivs"
  #define NS_WIN_NETWORK_DIR                  "NetW"
  #define NS_WIN_NETHOOD_DIR                  "netH"
  #define NS_WIN_FONTS_DIR                    "Fnts"
  #define NS_WIN_TEMPLATES_DIR                "Tmpls"
  #define NS_WIN_COMMON_STARTMENU_DIR         "CmStrt"
  #define NS_WIN_COMMON_PROGRAMS_DIR          "CmPrgs"
  #define NS_WIN_COMMON_STARTUP_DIR           "CmStrt"
  #define NS_WIN_COMMON_DESKTOP_DIRECTORY     "CmDeskP"
  #define NS_WIN_COMMON_APPDATA_DIR           "CmAppData"
  #define NS_WIN_APPDATA_DIR                  "AppData"
  #define NS_WIN_LOCAL_APPDATA_DIR            "LocalAppData"
  #define NS_WIN_LOCAL_APPDATA_LOW_DIR        "LocalAppDataLow"
  #define NS_WIN_LOW_INTEGRITY_TEMP           "LowTmpD"
  #define NS_WIN_PRINTHOOD                    "PrntHd"
  #define NS_WIN_COOKIES_DIR                  "CookD"
  #define NS_WIN_DEFAULT_DOWNLOAD_DIR         "DfltDwnld"
  #define NS_WIN_DOCUMENTS_DIR                "Docs"
  #define NS_WIN_PICTURES_DIR                 "Pict"
  #define NS_WIN_MUSIC_DIR                    "Music"
  #define NS_WIN_VIDEOS_DIR                   "Vids"
  #define NS_UNIX_LOCAL_DIR                   "Locl"
  #define NS_UNIX_LIB_DIR                     "LibD"
  #define NS_UNIX_HOME_DIR                    NS_OS_HOME_DIR
  #define NS_UNIX_XDG_DESKTOP_DIR             "XDGDesk"
  #define NS_UNIX_XDG_DOCUMENTS_DIR           "XDGDocs"
  #define NS_UNIX_XDG_DOWNLOAD_DIR            "XDGDwnld"
  #define NS_UNIX_XDG_MUSIC_DIR               "XDGMusic"
  #define NS_UNIX_XDG_PICTURES_DIR            "XDGPict"
  #define NS_UNIX_XDG_PUBLIC_SHARE_DIR        "XDGPubSh"
  #define NS_UNIX_XDG_TEMPLATES_DIR           "XDGTempl"
  #define NS_UNIX_XDG_VIDEOS_DIR              "XDGVids"
  #define NS_UNIX_DEFAULT_DOWNLOAD_DIR        "DfltDwnld"
#define NS_OS_DRIVE_DIR                         "DrvD"

With duplicates removed:

var specialPathKeys = [
    // http://mxr.mozilla.org/mozilla-central/source/xpcom/build/nsXULAppAPI.h
    'UAppData',
    'XREExtDL',
    'XREExeF',
    'ProfDS',
    'ProfLDS',
    'XRESysLExtPD',
    'XRESysSExtPD',
    'XREUSysExt',
    'XREAppDist',
    'UpdRootD',
    'UpdArchD',
    'OSUpdApplyToD',
    // http://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsAppDirectoryServiceDefs.h
    'AppRegF',
    'AppRegD',
    'DefRt',
    'PrfDef',
    'profDef',
    'ProfDefNoLoc',
    'DefProfRt',
    'DefProfLRt',
    'ARes',
    'AChrom',
    'APlugns',
    'SrchPlugns',
    'AChromDL',
    'APluginsDL',
    'SrchPluginsDL',
    'SHARED',
    'PrefD',
    'PrefF',
    'MetroPrefF',
    'PrefDL',
    'ExtPrefDL',
    'PrefDOverride',
    'ProfD',
    'ProfLD',
    'UChrm',
    'UsrSrchPlugns',
    'LclSt',
    'UPnls',
    'UMimTyp',
    'cachePDir',
    'BMarks',
    'DLoads',
    'SrchF',
    'XPIClnupD',
    'indexedDBPDir',
    'permissionDBPDir',
    // http://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsDirectoryServiceDefs.h
    'Home',
    'TmpD',
    'CurWorkD',
    'Desk',
    'CurProcD',
    'XCurProcD',
    'XpcomLib',
    'GreD',
    'GreBinD',
    'SysD',
    'Trsh',
    'Strt',
    'Shdwn',
    'ApplMenu',
    'CntlPnl',
    'Exts',
    'Fnts',
    'Prfs',
    'Docs',
    'ISrch',
    'DfltDwnld',
    'ULibDir',
    'UsrDsk',
    'LocDsk',
    'UsrApp',
    'LocApp',
    'UsrDocs',
    'LocDocs',
    'UsrIntrntPlgn',
    'LoclIntrntPlgn',
    'UsrFrmwrks',
    'LocFrmwrks',
    'UsrPrfs',
    'LocPrfs',
    'Pct',
    'Mov',
    'Music',
    'IntrntSts',
    'WinD',
    'ProgF',
    'DeskV',
    'Progs',
    'Cntls',
    'Prnts',
    'Pers',
    'Favs',
    'Strt',
    'Rcnt',
    'SndTo',
    'Buckt',
    'DeskP',
    'Drivs',
    'NetW',
    'netH',
    'Tmpls',
    'CmStrt',
    'CmPrgs',
    'CmDeskP',
    'CmAppData',
    'AppData',
    'LocalAppData',
    'LocalAppDataLow',
    'LowTmpD',
    'PrntHd',
    'CookD',
    'Pict',
    'Vids',
    'Locl',
    'LibD',
    'XDGDesk',
    'XDGDocs',
    'XDGDwnld',
    'XDGMusic',
    'XDGPict',
    'XDGPubSh',
    'XDGTempl',
    'XDGVids',
    'DrvD'
];

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment