rem: dd("Unknown match: " + match); 
add: else { dd("Unknown match: " + match); }  
context: function makeLogName(obj, type){    // We like some control on the number of digits.    function formatTimeNumber(num, digits)    {        var rv = num.toString();        while (rv.length < digits)            rv = "0" + rv;        return rv;    };    function replaceNonPrintables(ch) {        var rv = ch.charCodeAt().toString(16);        if (rv.length == 1)            rv = "0" + rv;        else if (rv.length == 3)            rv = "u0" + rv;        else if (rv.length == 4)            rv = "u" + rv;        return "%" + rv;    };    function encode(text)    {        text = text.replace(/[^-A-Z0-9_#!.,'@~\[\]{}()%$"]/gi, replaceNonPrintables);        return encodeURIComponent(text);    };    /*  /\$\(([^)]+)\)|\$(\w)/g   *     *       <----->     <-->     *     *      longName   shortName  *     */    function replaceParam(match, longName, shortName)    {        if (typeof longName != "undefined" && longName)        {            // Remember to encode these, don't want some dodgy # breaking stuff.            if (longName in longCodes)                return encode(longCodes[longName]);            dd("Unknown long code: " + longName);            return match;        }        else if (typeof shortName != "undefined" && shortName)        {            if (shortName in shortCodes)                return encode(shortCodes[shortName]);            dd("Unknown short code: " + shortName);            return match;        }        dd("Unknown match: " + match);        return match;    };    var base = client.prefs["logFolder"];    var specific = client.prefs["logFile." + type];    // Make sure we got ourselves a slash, or we'll be in trouble with the    // concatenation.    if (!base.match(/\/$/))        base = base + "/";    var file = base + specific;    // Get details for $-replacement variables.    var info = getObjectDetails(obj);    // Three longs codes: $(network), $(channel) and $(user).    // Each is available only if appropriate for the object.    var longCodes = new Object();    if (info.network)        longCodes["network"] = info.network.unicodeName;    if (info.channel)        longCodes["channel"] = info.channel.unicodeName;    if (info.user)        longCodes["user"] = info.user.unicodeName;    // Six short codes: $y, $m, $d, $h, $n, $s.    // These are time codes, each replaced with a fixed-length number.    var d = new Date();    var shortCodes = { y: formatTimeNumber(d.getFullYear(), 4),                       m: formatTimeNumber(d.getMonth() + 1, 2),                       d: formatTimeNumber(d.getDate(), 2),                       h: formatTimeNumber(d.getHours(), 2),                       n: formatTimeNumber(d.getMinutes(), 2),                       s: formatTimeNumber(d.getSeconds(), 2)                     };    // Replace all $-variables in one go.    file = file.replace(/\$\(([^)]+)\)|\$(\w)/g, replaceParam);    // Convert from file: URL to local OS format.    try    {        file = getFileFromURLSpec(file).path;    }    catch(ex)    {        dd("Error converting '" + base + specific + "' to a local file path.");    }    return file;}
meta: 1622	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/1622/0b3cd684d8e773fa4e14a6cb4fdebaacfa65a4eb/prefs.js/clean/xul/content/prefs.js