XFA: clang-format all pdfium code.

No behavior change.

Generated by:
  find . -name '*.cpp' -o -name '*.h' | \
  grep -E -v 'third_party|thirdparties|lpng_v163|tiff_v403' | \
  xargs ../../buildtools/mac/clang-format -i
Then manually merged https://codereview.chromium.org/1269223002/

See thread "tabs vs spaces" on pdfium@googlegroups.com for discussion.

BUG=none
diff --git a/fpdfsdk/src/javascript/util.cpp b/fpdfsdk/src/javascript/util.cpp
index 4083ed5..858af00 100644
--- a/fpdfsdk/src/javascript/util.cpp
+++ b/fpdfsdk/src/javascript/util.cpp
@@ -16,19 +16,18 @@
 #include "../../include/javascript/JS_EventHandler.h"
 #include "../../include/javascript/JS_Runtime.h"
 
-#if _FX_OS_  == _FX_ANDROID_
+#if _FX_OS_ == _FX_ANDROID_
 #include <ctype.h>
 #endif
 
-static v8::Isolate* GetIsolate(IFXJS_Context* cc)
-{
-    CJS_Context* pContext = (CJS_Context *)cc;
-    ASSERT(pContext != NULL);
+static v8::Isolate* GetIsolate(IFXJS_Context* cc) {
+  CJS_Context* pContext = (CJS_Context*)cc;
+  ASSERT(pContext != NULL);
 
-    CJS_Runtime* pRuntime = pContext->GetJSRuntime();
-    ASSERT(pRuntime != NULL);
+  CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+  ASSERT(pRuntime != NULL);
 
-    return pRuntime->GetIsolate();
+  return pRuntime->GetIsolate();
 }
 
 BEGIN_JS_STATIC_CONST(CJS_Util)
@@ -38,350 +37,235 @@
 END_JS_STATIC_PROP()
 
 BEGIN_JS_STATIC_METHOD(CJS_Util)
-    JS_STATIC_METHOD_ENTRY(printd)
-    JS_STATIC_METHOD_ENTRY(printf)
-    JS_STATIC_METHOD_ENTRY(printx)
-    JS_STATIC_METHOD_ENTRY(scand)
-    JS_STATIC_METHOD_ENTRY(byteToChar)
+JS_STATIC_METHOD_ENTRY(printd)
+JS_STATIC_METHOD_ENTRY(printf)
+JS_STATIC_METHOD_ENTRY(printx)
+JS_STATIC_METHOD_ENTRY(scand)
+JS_STATIC_METHOD_ENTRY(byteToChar)
 END_JS_STATIC_METHOD()
 
-IMPLEMENT_JS_CLASS(CJS_Util,util)
+IMPLEMENT_JS_CLASS(CJS_Util, util)
 
-util::util(CJS_Object *pJSObject) : CJS_EmbedObj(pJSObject)
-{
-}
+util::util(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {}
 
-util::~util(void)
-{
-}
+util::~util(void) {}
 
-
-struct stru_TbConvert
-{
-    const FX_WCHAR* lpszJSMark;
-    const FX_WCHAR* lpszCppMark;
+struct stru_TbConvert {
+  const FX_WCHAR* lpszJSMark;
+  const FX_WCHAR* lpszCppMark;
 };
 
 const stru_TbConvert fcTable[] = {
-    { L"mmmm", L"%B" },
-    { L"mmm", L"%b" },
-    { L"mm",  L"%m" },
+    {L"mmmm", L"%B"},
+    {L"mmm", L"%b"},
+    {L"mm", L"%m"},
     //"m"
-    { L"dddd", L"%A" },
-    { L"ddd", L"%a" },
-    { L"dd",  L"%d" },
+    {L"dddd", L"%A"},
+    {L"ddd", L"%a"},
+    {L"dd", L"%d"},
     //"d",   "%w",
-    { L"yyyy", L"%Y" },
-    { L"yy",  L"%y" },
-    { L"HH",  L"%H" },
+    {L"yyyy", L"%Y"},
+    {L"yy", L"%y"},
+    {L"HH", L"%H"},
     //"H"
-    { L"hh",  L"%I" },
+    {L"hh", L"%I"},
     //"h"
-    { L"MM",  L"%M" },
+    {L"MM", L"%M"},
     //"M"
-    { L"ss",  L"%S" },
+    {L"ss", L"%S"},
     //"s
-    { L"TT",  L"%p" },
-    //"t"
+    {L"TT", L"%p"},
+//"t"
 #if defined(_WIN32)
-    { L"tt",  L"%p" },
-    { L"h",  L"%#I" },
+    {L"tt", L"%p"},
+    {L"h", L"%#I"},
 #else
-    { L"tt",  L"%P" },
-    { L"h",  L"%l" },
+    {L"tt", L"%P"},
+    {L"h", L"%l"},
 #endif
 };
 
-#define UTIL_INT            0
-#define UTIL_DOUBLE         1
-#define UTIL_STRING         2
+#define UTIL_INT 0
+#define UTIL_DOUBLE 1
+#define UTIL_STRING 2
 
-int util::ParstDataType(std::wstring* sFormat)
-{
-    bool bPercent = FALSE;
-    for (size_t i = 0; i < sFormat->length(); ++i)
-    {
-        wchar_t c = (*sFormat)[i];
-        if (c == L'%')
-        {
-            bPercent = true;
-            continue;
-        }
-
-        if (bPercent)
-        {
-            if (c == L'c' || c == L'C' || c == L'd' || c == L'i' || c == L'o' || c == L'u' || c == L'x' || c == L'X')
-            {
-                return UTIL_INT;
-            }
-            if (c == L'e' || c == L'E' || c == L'f' || c == L'g' || c == L'G')
-            {
-                return UTIL_DOUBLE;
-            }
-            if (c == L's' || c == L'S')
-            {
-                // Map s to S since we always deal internally
-                // with wchar_t strings.
-                (*sFormat)[i] = L'S';
-                return UTIL_STRING;
-            }
-            if (c == L'.' || c == L'+' || c == L'-' || c == L'#' || c == L' ' || CJS_PublicMethods::IsDigit(c))
-            {
-                continue;
-            }
-            break;
-        }
+int util::ParstDataType(std::wstring* sFormat) {
+  bool bPercent = FALSE;
+  for (size_t i = 0; i < sFormat->length(); ++i) {
+    wchar_t c = (*sFormat)[i];
+    if (c == L'%') {
+      bPercent = true;
+      continue;
     }
 
-    return -1;
+    if (bPercent) {
+      if (c == L'c' || c == L'C' || c == L'd' || c == L'i' || c == L'o' ||
+          c == L'u' || c == L'x' || c == L'X') {
+        return UTIL_INT;
+      }
+      if (c == L'e' || c == L'E' || c == L'f' || c == L'g' || c == L'G') {
+        return UTIL_DOUBLE;
+      }
+      if (c == L's' || c == L'S') {
+        // Map s to S since we always deal internally
+        // with wchar_t strings.
+        (*sFormat)[i] = L'S';
+        return UTIL_STRING;
+      }
+      if (c == L'.' || c == L'+' || c == L'-' || c == L'#' || c == L' ' ||
+          CJS_PublicMethods::IsDigit(c)) {
+        continue;
+      }
+      break;
+    }
+  }
+
+  return -1;
 }
 
-FX_BOOL util::printf(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
-    int iSize = params.size();
-    if (iSize < 1)
-        return FALSE;
-    std::wstring c_ConvChar(params[0].ToCFXWideString().c_str());
-    std::vector<std::wstring> c_strConvers;
-    int iOffset = 0;
-    int iOffend = 0;
-    c_ConvChar.insert(c_ConvChar.begin(),L'S');
-    while(iOffset != -1)
-    {
-        iOffend = c_ConvChar.find(L"%",iOffset+1);
-        std::wstring strSub;
-        if (iOffend == -1)
-            strSub = c_ConvChar.substr(iOffset);
-        else
-            strSub = c_ConvChar.substr(iOffset ,iOffend - iOffset);
-        c_strConvers.push_back(strSub);
-        iOffset = iOffend ;
-    }
-
-    std::wstring c_strResult;
-
-    //for(int iIndex = 1;iIndex < params.size();iIndex++)
-    std::wstring c_strFormat;
-    for(int iIndex = 0;iIndex < (int)c_strConvers.size();iIndex++)
-    {
-        c_strFormat = c_strConvers[iIndex];
-        if (iIndex == 0)
-        {
-            c_strResult = c_strFormat;
-            continue;
-        }
-
-
-        CFX_WideString strSegment;
-        if (iIndex >= iSize) {
-            c_strResult += c_strFormat;
-            continue;
-        }
-
-        switch (ParstDataType(&c_strFormat))
-        {
-            case UTIL_INT:
-                strSegment.Format(c_strFormat.c_str(), params[iIndex].ToInt());
-                break;
-            case UTIL_DOUBLE:
-                strSegment.Format(c_strFormat.c_str(), params[iIndex].ToDouble());
-                break;
-            case UTIL_STRING:
-                strSegment.Format(c_strFormat.c_str(), params[iIndex].ToCFXWideString().c_str());
-                break;
-            default:
-                strSegment.Format(L"%S", c_strFormat.c_str());
-                break;
-        }
-        c_strResult += strSegment.GetBuffer(strSegment.GetLength()+1);
-    }
-
-    c_strResult.erase(c_strResult.begin());
-    vRet = c_strResult.c_str();
-    return TRUE;
-}
-
-FX_BOOL util::printd(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
-    v8::Isolate* isolate = GetIsolate(cc);
-
-    int iSize = params.size();
-    if (iSize < 2)
-        return FALSE;
-
-    CJS_Value p1(isolate);
-    p1 = params[0];
-
-    CJS_Value p2 = params[1];
-    CJS_Date jsDate(isolate);
-    if (!p2.ConvertToDate(jsDate))
-    {
-        sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPRINT1);
-        return FALSE;
-    }
-
-    if (!jsDate.IsValidDate())
-    {
-        sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPRINT2);
-        return FALSE;
-    }
-
-    if (p1.GetType() == VT_number)
-    {
-        int nFormat = p1.ToInt();
-        CFX_WideString swResult;
-
-        switch (nFormat)
-        {
-        case 0:
-            swResult.Format(L"D:%04d%02d%02d%02d%02d%02d",
-                jsDate.GetYear(),
-                jsDate.GetMonth() + 1,
-                jsDate.GetDay(),
-                jsDate.GetHours(),
-                jsDate.GetMinutes(),
-                jsDate.GetSeconds());
-            break;
-        case 1:
-            swResult.Format(L"%04d.%02d.%02d %02d:%02d:%02d",
-                jsDate.GetYear(),
-                jsDate.GetMonth() + 1,
-                jsDate.GetDay(),
-                jsDate.GetHours(),
-                jsDate.GetMinutes(),
-                jsDate.GetSeconds());
-            break;
-        case 2:
-            swResult.Format(L"%04d/%02d/%02d %02d:%02d:%02d",
-                jsDate.GetYear(),
-                jsDate.GetMonth() + 1,
-                jsDate.GetDay(),
-                jsDate.GetHours(),
-                jsDate.GetMinutes(),
-                jsDate.GetSeconds());
-            break;
-        default:
-            return FALSE;
-        }
-
-        vRet = swResult.c_str();
-        return TRUE;
-    }
-    if (p1.GetType() == VT_string)
-    {
-        std::basic_string<wchar_t> cFormat = p1.ToCFXWideString().c_str();
-
-        bool bXFAPicture = false;
-        if (iSize > 2)
-        {
-            bXFAPicture = params[2].ToBool();
-        }
-
-        if (bXFAPicture)
-        {
-            return FALSE; //currently, it doesn't support XFAPicture.
-        }
-
-        int iIndex;
-        for(iIndex = 0;iIndex<sizeof(fcTable)/sizeof(stru_TbConvert);iIndex++)
-        {
-            int iStart = 0;
-            int iEnd;
-            while((iEnd = cFormat.find(fcTable[iIndex].lpszJSMark, iStart)) != -1)
-            {
-                cFormat.replace(iEnd, FXSYS_wcslen(fcTable[iIndex].lpszJSMark), fcTable[iIndex].lpszCppMark);
-                iStart = iEnd;
-            }
-        }
-
-        int iYear,iMonth,iDay,iHour,iMin,iSec;
-        iYear = jsDate.GetYear();
-        iMonth = jsDate.GetMonth();
-        iDay = jsDate.GetDay();
-        iHour = jsDate.GetHours();
-        iMin = jsDate.GetMinutes();
-        iSec = jsDate.GetSeconds();
-
-        struct tm time = {};
-        time.tm_year = iYear-1900;
-        time.tm_mon = iMonth;
-        time.tm_mday = iDay;
-        time.tm_hour = iHour;
-        time.tm_min = iMin;
-        time.tm_sec = iSec;
-
-        struct stru_TbConvertAd
-        {
-            const FX_WCHAR* lpszJSMark;
-            int     iValue;
-        };
-
-        stru_TbConvertAd cTableAd[] ={
-            { L"m", iMonth+1 },
-            { L"d", iDay },
-            { L"H", iHour },
-            { L"h", iHour>12?iHour-12:iHour },
-            { L"M", iMin },
-            { L"s", iSec },
-        };
-
-        for(iIndex = 0;iIndex<sizeof(cTableAd)/sizeof(stru_TbConvertAd);iIndex++)
-        {
-            wchar_t tszValue[10];
-            CFX_WideString sValue;
-            sValue.Format(L"%d",cTableAd[iIndex].iValue);
-            memcpy(tszValue, (wchar_t *)sValue.GetBuffer(sValue.GetLength()+1),
-                               (sValue.GetLength()+1)*sizeof(wchar_t));
-
-            int iStart = 0;
-            int iEnd;
-            while((iEnd = cFormat.find(cTableAd[iIndex].lpszJSMark, iStart)) != -1)
-            {
-                if (iEnd > 0)
-                {
-                    if (cFormat[iEnd-1] == L'%')
-                    {
-                        iStart = iEnd+1;
-                        continue;
-                    }
-                }
-                cFormat.replace(iEnd, FXSYS_wcslen(cTableAd[iIndex].lpszJSMark), tszValue);
-                iStart = iEnd;
-            }
-        }
-
-        CFX_WideString strFormat;
-        wchar_t buf[64] = {};
-        strFormat = wcsftime(buf, 64, cFormat.c_str(), &time);
-        cFormat = buf;
-        vRet = cFormat.c_str();
-        return TRUE;
-    }
+FX_BOOL util::printf(IFXJS_Context* cc,
+                     const CJS_Parameters& params,
+                     CJS_Value& vRet,
+                     CFX_WideString& sError) {
+  int iSize = params.size();
+  if (iSize < 1)
     return FALSE;
+  std::wstring c_ConvChar(params[0].ToCFXWideString().c_str());
+  std::vector<std::wstring> c_strConvers;
+  int iOffset = 0;
+  int iOffend = 0;
+  c_ConvChar.insert(c_ConvChar.begin(), L'S');
+  while (iOffset != -1) {
+    iOffend = c_ConvChar.find(L"%", iOffset + 1);
+    std::wstring strSub;
+    if (iOffend == -1)
+      strSub = c_ConvChar.substr(iOffset);
+    else
+      strSub = c_ConvChar.substr(iOffset, iOffend - iOffset);
+    c_strConvers.push_back(strSub);
+    iOffset = iOffend;
+  }
+
+  std::wstring c_strResult;
+
+  // for(int iIndex = 1;iIndex < params.size();iIndex++)
+  std::wstring c_strFormat;
+  for (int iIndex = 0; iIndex < (int)c_strConvers.size(); iIndex++) {
+    c_strFormat = c_strConvers[iIndex];
+    if (iIndex == 0) {
+      c_strResult = c_strFormat;
+      continue;
+    }
+
+    CFX_WideString strSegment;
+    if (iIndex >= iSize) {
+      c_strResult += c_strFormat;
+      continue;
+    }
+
+    switch (ParstDataType(&c_strFormat)) {
+      case UTIL_INT:
+        strSegment.Format(c_strFormat.c_str(), params[iIndex].ToInt());
+        break;
+      case UTIL_DOUBLE:
+        strSegment.Format(c_strFormat.c_str(), params[iIndex].ToDouble());
+        break;
+      case UTIL_STRING:
+        strSegment.Format(c_strFormat.c_str(),
+                          params[iIndex].ToCFXWideString().c_str());
+        break;
+      default:
+        strSegment.Format(L"%S", c_strFormat.c_str());
+        break;
+    }
+    c_strResult += strSegment.GetBuffer(strSegment.GetLength() + 1);
+  }
+
+  c_strResult.erase(c_strResult.begin());
+  vRet = c_strResult.c_str();
+  return TRUE;
 }
 
-void util::printd(const std::wstring &cFormat2, CJS_Date jsDate, bool bXFAPicture, std::wstring &cPurpose)
-{
-    std::wstring cFormat = cFormat2;
+FX_BOOL util::printd(IFXJS_Context* cc,
+                     const CJS_Parameters& params,
+                     CJS_Value& vRet,
+                     CFX_WideString& sError) {
+  v8::Isolate* isolate = GetIsolate(cc);
 
-    if (bXFAPicture)
-    {
-        return ; //currently, it doesn't support XFAPicture.
+  int iSize = params.size();
+  if (iSize < 2)
+    return FALSE;
+
+  CJS_Value p1(isolate);
+  p1 = params[0];
+
+  CJS_Value p2 = params[1];
+  CJS_Date jsDate(isolate);
+  if (!p2.ConvertToDate(jsDate)) {
+    sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPRINT1);
+    return FALSE;
+  }
+
+  if (!jsDate.IsValidDate()) {
+    sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPRINT2);
+    return FALSE;
+  }
+
+  if (p1.GetType() == VT_number) {
+    int nFormat = p1.ToInt();
+    CFX_WideString swResult;
+
+    switch (nFormat) {
+      case 0:
+        swResult.Format(L"D:%04d%02d%02d%02d%02d%02d", jsDate.GetYear(),
+                        jsDate.GetMonth() + 1, jsDate.GetDay(),
+                        jsDate.GetHours(), jsDate.GetMinutes(),
+                        jsDate.GetSeconds());
+        break;
+      case 1:
+        swResult.Format(L"%04d.%02d.%02d %02d:%02d:%02d", jsDate.GetYear(),
+                        jsDate.GetMonth() + 1, jsDate.GetDay(),
+                        jsDate.GetHours(), jsDate.GetMinutes(),
+                        jsDate.GetSeconds());
+        break;
+      case 2:
+        swResult.Format(L"%04d/%02d/%02d %02d:%02d:%02d", jsDate.GetYear(),
+                        jsDate.GetMonth() + 1, jsDate.GetDay(),
+                        jsDate.GetHours(), jsDate.GetMinutes(),
+                        jsDate.GetSeconds());
+        break;
+      default:
+        return FALSE;
+    }
+
+    vRet = swResult.c_str();
+    return TRUE;
+  }
+  if (p1.GetType() == VT_string) {
+    std::basic_string<wchar_t> cFormat = p1.ToCFXWideString().c_str();
+
+    bool bXFAPicture = false;
+    if (iSize > 2) {
+      bXFAPicture = params[2].ToBool();
+    }
+
+    if (bXFAPicture) {
+      return FALSE;  // currently, it doesn't support XFAPicture.
     }
 
     int iIndex;
-    for(iIndex = 0;iIndex<sizeof(fcTable)/sizeof(stru_TbConvert);iIndex++)
-    {
-        int iStart = 0;
-        int iEnd;
-        while((iEnd = cFormat.find(fcTable[iIndex].lpszJSMark, iStart)) != -1)
-        {
-            cFormat.replace(iEnd,FXSYS_wcslen(fcTable[iIndex].lpszJSMark), fcTable[iIndex].lpszCppMark);
-            iStart = iEnd;
-        }
+    for (iIndex = 0; iIndex < sizeof(fcTable) / sizeof(stru_TbConvert);
+         iIndex++) {
+      int iStart = 0;
+      int iEnd;
+      while ((iEnd = cFormat.find(fcTable[iIndex].lpszJSMark, iStart)) != -1) {
+        cFormat.replace(iEnd, FXSYS_wcslen(fcTable[iIndex].lpszJSMark),
+                        fcTable[iIndex].lpszCppMark);
+        iStart = iEnd;
+      }
     }
 
-    int iYear,iMonth,iDay,iHour,iMin,iSec;
+    int iYear, iMonth, iDay, iHour, iMin, iSec;
     iYear = jsDate.GetYear();
     iMonth = jsDate.GetMonth();
     iDay = jsDate.GetDay();
@@ -390,243 +274,309 @@
     iSec = jsDate.GetSeconds();
 
     struct tm time = {};
-    time.tm_year = iYear-1900;
+    time.tm_year = iYear - 1900;
     time.tm_mon = iMonth;
     time.tm_mday = iDay;
     time.tm_hour = iHour;
     time.tm_min = iMin;
     time.tm_sec = iSec;
-//  COleDateTime cppTm(iYear,iMonth+1,iDay,iHour,iMin,iSec);
-    //CString strFormat = cppTm.Format(cFormat.c_str());
 
-    struct stru_TbConvertAd
-    {
-        const FX_WCHAR* lpszJSMark;
-        int     iValue;
+    struct stru_TbConvertAd {
+      const FX_WCHAR* lpszJSMark;
+      int iValue;
     };
 
-    stru_TbConvertAd cTableAd[] ={
-        { L"m", iMonth+1 },
-        { L"d", iDay },
-        { L"H", iHour },
-        { L"h", iHour>12?iHour-12:iHour },
-        { L"M", iMin },
-        { L"s", iSec },
+    stru_TbConvertAd cTableAd[] = {
+        {L"m", iMonth + 1}, {L"d", iDay},
+        {L"H", iHour},      {L"h", iHour > 12 ? iHour - 12 : iHour},
+        {L"M", iMin},       {L"s", iSec},
     };
 
-    //cFormat = strFormat.GetBuffer(strFormat.GetLength()+1);
-    for(iIndex = 0;iIndex<sizeof(cTableAd)/sizeof(stru_TbConvertAd);iIndex++)
-    {
-        wchar_t tszValue[10];
-        //_itot(cTableAd[iIndex].iValue,tszValue,10);
-        CFX_WideString sValue;
-        sValue.Format(L"%d",cTableAd[iIndex].iValue);
-        memcpy(tszValue, (wchar_t *)sValue.GetBuffer(sValue.GetLength()+1),sValue.GetLength()*sizeof(wchar_t));
+    for (iIndex = 0; iIndex < sizeof(cTableAd) / sizeof(stru_TbConvertAd);
+         iIndex++) {
+      wchar_t tszValue[10];
+      CFX_WideString sValue;
+      sValue.Format(L"%d", cTableAd[iIndex].iValue);
+      memcpy(tszValue, (wchar_t*)sValue.GetBuffer(sValue.GetLength() + 1),
+             (sValue.GetLength() + 1) * sizeof(wchar_t));
 
-
-        //strFormat.Replace(cTableAd[iIndex].lpszJSMark,"%d");
-        //strFormat.Format(strFormat,cTableAd[iIndex].iValue);
-        int iStart = 0;
-        int iEnd;
-        while((iEnd = cFormat.find(cTableAd[iIndex].lpszJSMark, iStart)) != -1)
-        {
-            if (iEnd > 0)
-            {
-                if (cFormat[iEnd-1] == L'%')
-                {
-                    iStart = iEnd+1;
-                    continue;
-                }
-            }
-            cFormat.replace(iEnd,FXSYS_wcslen(cTableAd[iIndex].lpszJSMark),tszValue);
-            iStart = iEnd;
+      int iStart = 0;
+      int iEnd;
+      while ((iEnd = cFormat.find(cTableAd[iIndex].lpszJSMark, iStart)) != -1) {
+        if (iEnd > 0) {
+          if (cFormat[iEnd - 1] == L'%') {
+            iStart = iEnd + 1;
+            continue;
+          }
         }
+        cFormat.replace(iEnd, FXSYS_wcslen(cTableAd[iIndex].lpszJSMark),
+                        tszValue);
+        iStart = iEnd;
+      }
     }
 
     CFX_WideString strFormat;
     wchar_t buf[64] = {};
     strFormat = wcsftime(buf, 64, cFormat.c_str(), &time);
     cFormat = buf;
-    cPurpose = cFormat;
-}
-
-FX_BOOL util::printx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
-    int iSize = params.size();
-    if (iSize<2)
-        return FALSE;
-    CFX_WideString sFormat = params[0].ToCFXWideString();
-    CFX_WideString sSource = params[1].ToCFXWideString();
-    std::string cFormat = CFX_ByteString::FromUnicode(sFormat).c_str();
-    std::string cSource = CFX_ByteString::FromUnicode(sSource).c_str();
-    std::string cDest;
-    printx(cFormat,cSource,cDest);
-    vRet = cDest.c_str();
+    vRet = cFormat.c_str();
     return TRUE;
+  }
+  return FALSE;
 }
 
-void util::printx(const std::string &cFormat,const std::string &cSource2,std::string &cPurpose)
-{
-    std::string cSource(cSource2);
-    if (!cPurpose.empty())
-        //cPurpose.clear();
-        cPurpose.erase();
-    int itSource = 0;
-    int iSize = cSource.size();
-    for(int iIndex = 0; iIndex < (int)cFormat.size() && itSource<iSize; iIndex++)
-    {
-        char letter = cFormat[iIndex];
-        switch(letter)
-        {
-        case '?':
-            //cPurpose.push_back(cSource[itSource]);
+void util::printd(const std::wstring& cFormat2,
+                  CJS_Date jsDate,
+                  bool bXFAPicture,
+                  std::wstring& cPurpose) {
+  std::wstring cFormat = cFormat2;
+
+  if (bXFAPicture) {
+    return;  // currently, it doesn't support XFAPicture.
+  }
+
+  int iIndex;
+  for (iIndex = 0; iIndex < sizeof(fcTable) / sizeof(stru_TbConvert);
+       iIndex++) {
+    int iStart = 0;
+    int iEnd;
+    while ((iEnd = cFormat.find(fcTable[iIndex].lpszJSMark, iStart)) != -1) {
+      cFormat.replace(iEnd, FXSYS_wcslen(fcTable[iIndex].lpszJSMark),
+                      fcTable[iIndex].lpszCppMark);
+      iStart = iEnd;
+    }
+  }
+
+  int iYear, iMonth, iDay, iHour, iMin, iSec;
+  iYear = jsDate.GetYear();
+  iMonth = jsDate.GetMonth();
+  iDay = jsDate.GetDay();
+  iHour = jsDate.GetHours();
+  iMin = jsDate.GetMinutes();
+  iSec = jsDate.GetSeconds();
+
+  struct tm time = {};
+  time.tm_year = iYear - 1900;
+  time.tm_mon = iMonth;
+  time.tm_mday = iDay;
+  time.tm_hour = iHour;
+  time.tm_min = iMin;
+  time.tm_sec = iSec;
+  //  COleDateTime cppTm(iYear,iMonth+1,iDay,iHour,iMin,iSec);
+  // CString strFormat = cppTm.Format(cFormat.c_str());
+
+  struct stru_TbConvertAd {
+    const FX_WCHAR* lpszJSMark;
+    int iValue;
+  };
+
+  stru_TbConvertAd cTableAd[] = {
+      {L"m", iMonth + 1}, {L"d", iDay},
+      {L"H", iHour},      {L"h", iHour > 12 ? iHour - 12 : iHour},
+      {L"M", iMin},       {L"s", iSec},
+  };
+
+  // cFormat = strFormat.GetBuffer(strFormat.GetLength()+1);
+  for (iIndex = 0; iIndex < sizeof(cTableAd) / sizeof(stru_TbConvertAd);
+       iIndex++) {
+    wchar_t tszValue[10];
+    //_itot(cTableAd[iIndex].iValue,tszValue,10);
+    CFX_WideString sValue;
+    sValue.Format(L"%d", cTableAd[iIndex].iValue);
+    memcpy(tszValue, (wchar_t*)sValue.GetBuffer(sValue.GetLength() + 1),
+           sValue.GetLength() * sizeof(wchar_t));
+
+    // strFormat.Replace(cTableAd[iIndex].lpszJSMark,"%d");
+    // strFormat.Format(strFormat,cTableAd[iIndex].iValue);
+    int iStart = 0;
+    int iEnd;
+    while ((iEnd = cFormat.find(cTableAd[iIndex].lpszJSMark, iStart)) != -1) {
+      if (iEnd > 0) {
+        if (cFormat[iEnd - 1] == L'%') {
+          iStart = iEnd + 1;
+          continue;
+        }
+      }
+      cFormat.replace(iEnd, FXSYS_wcslen(cTableAd[iIndex].lpszJSMark),
+                      tszValue);
+      iStart = iEnd;
+    }
+  }
+
+  CFX_WideString strFormat;
+  wchar_t buf[64] = {};
+  strFormat = wcsftime(buf, 64, cFormat.c_str(), &time);
+  cFormat = buf;
+  cPurpose = cFormat;
+}
+
+FX_BOOL util::printx(IFXJS_Context* cc,
+                     const CJS_Parameters& params,
+                     CJS_Value& vRet,
+                     CFX_WideString& sError) {
+  int iSize = params.size();
+  if (iSize < 2)
+    return FALSE;
+  CFX_WideString sFormat = params[0].ToCFXWideString();
+  CFX_WideString sSource = params[1].ToCFXWideString();
+  std::string cFormat = CFX_ByteString::FromUnicode(sFormat).c_str();
+  std::string cSource = CFX_ByteString::FromUnicode(sSource).c_str();
+  std::string cDest;
+  printx(cFormat, cSource, cDest);
+  vRet = cDest.c_str();
+  return TRUE;
+}
+
+void util::printx(const std::string& cFormat,
+                  const std::string& cSource2,
+                  std::string& cPurpose) {
+  std::string cSource(cSource2);
+  if (!cPurpose.empty())
+    // cPurpose.clear();
+    cPurpose.erase();
+  int itSource = 0;
+  int iSize = cSource.size();
+  for (int iIndex = 0; iIndex < (int)cFormat.size() && itSource < iSize;
+       iIndex++) {
+    char letter = cFormat[iIndex];
+    switch (letter) {
+      case '?':
+        // cPurpose.push_back(cSource[itSource]);
+        cPurpose += cSource[itSource];
+        itSource++;
+        break;
+      case 'X': {
+        while (itSource < iSize) {
+          if ((cSource[itSource] >= '0' && cSource[itSource] <= '9') ||
+              (cSource[itSource] >= 'a' && cSource[itSource] <= 'z') ||
+              (cSource[itSource] >= 'A' && cSource[itSource] <= 'Z')) {
+            // cPurpose.push_back(cSource[itSource]);
             cPurpose += cSource[itSource];
             itSource++;
             break;
-        case 'X':
-            {
-                while(itSource < iSize)
-                {
-                    if ((cSource[itSource]>='0'&&cSource[itSource]<='9') || (cSource[itSource]>='a' && cSource[itSource]<='z') || (cSource[itSource]>='A' && cSource[itSource]<='Z'))
-                    {
-                        //cPurpose.push_back(cSource[itSource]);
-                        cPurpose += cSource[itSource];
-                        itSource++;
-                        break;
-                    }
-                    itSource++;
-                }
-                break;
-            }
-            break;
-        case 'A':
-            {
-                while(itSource < iSize)
-                {
-                    if ((cSource[itSource]>='a' && cSource[itSource]<='z') || (cSource[itSource]>='A' && cSource[itSource]<='Z'))
-                    {
-                        //cPurpose.push_back(cSource[itSource]);
-                        cPurpose += cSource[itSource];
-                        itSource++;
-                        break;
-                    }
-                    itSource++;
-                }
-                break;
-            }
-            break;
-        case '9':
-            {
-                while(itSource < iSize)
-                {
-                    if (cSource[itSource]>='0'&&cSource[itSource]<='9')
-                    {
-                        //cPurpose.push_back(cSource[itSource]);
-                        cPurpose += cSource[itSource];
-                        itSource++;
-                        break;
-                    }
-                    itSource++;
-                }
-                break;
-            }
-        case '*':
-            {
-                cPurpose.append(cSource,itSource,iSize-itSource);
-                itSource = iSize-1;
-                break;
-            }
-        case '\\':
-            break;
-        case '>':
-            {
-                for(std::string::iterator it = cSource.begin();it != cSource.end(); it++)
-                {
-                    *it = toupper(*it);
-                }
-                break;
-            }
-        case '<':
-            {
-                for(std::string::iterator it = cSource.begin();it != cSource.end(); it++)
-                {
-                    *it = tolower(*it);
-                }
-                break;
-            }
-        case '=':
-            break;
-        default:
-            //cPurpose.push_back(letter);
-            cPurpose += letter;
-            break;
+          }
+          itSource++;
         }
-    }
-}
-
-FX_BOOL util::scand(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
-    v8::Isolate* isolate = GetIsolate(cc);
-    int iSize = params.size();
-    if (iSize < 2)
-        return FALSE;
-
-    CFX_WideString sFormat = params[0].ToCFXWideString();
-    CFX_WideString sDate = params[1].ToCFXWideString();
-    double dDate = JS_GetDateTime();
-    if (sDate.GetLength() > 0)
-    {
-        FX_BOOL bWrongFormat = FALSE;
-        dDate = CJS_PublicMethods::MakeRegularDate(sDate,sFormat,bWrongFormat);
-    }
-
-    if (!JS_PortIsNan(dDate))
-    {
-        CJS_Date date(isolate,dDate);
-        vRet = date;
-    }
-    else
-    {
-        vRet.SetNull();
-    }
-
-    return TRUE;
-}
-
-int64_t FX_atoi64(const char *nptr)
-{
-        int c;              /* current char */
-        int64_t total;      /* current total */
-        int sign;           /* if '-', then negative, otherwise positive */
-
-        /* skip whitespace */
-        while ( isspace((int)(unsigned char)*nptr) )
-            ++nptr;
-
-        c = (int)(unsigned char)*nptr++;
-        sign = c;           /* save sign indication */
-        if (c == '-' || c == '+')
-            c = (int)(unsigned char)*nptr++;    /* skip sign */
-
-        total = 0;
-
-        while (isdigit(c)) {
-            total = 10 * total + (c - '0');     /* accumulate digit */
-            c = (int)(unsigned char)*nptr++;    /* get next char */
+        break;
+      } break;
+      case 'A': {
+        while (itSource < iSize) {
+          if ((cSource[itSource] >= 'a' && cSource[itSource] <= 'z') ||
+              (cSource[itSource] >= 'A' && cSource[itSource] <= 'Z')) {
+            // cPurpose.push_back(cSource[itSource]);
+            cPurpose += cSource[itSource];
+            itSource++;
+            break;
+          }
+          itSource++;
         }
-
-        return sign == '-' ? -total : total;
+        break;
+      } break;
+      case '9': {
+        while (itSource < iSize) {
+          if (cSource[itSource] >= '0' && cSource[itSource] <= '9') {
+            // cPurpose.push_back(cSource[itSource]);
+            cPurpose += cSource[itSource];
+            itSource++;
+            break;
+          }
+          itSource++;
+        }
+        break;
+      }
+      case '*': {
+        cPurpose.append(cSource, itSource, iSize - itSource);
+        itSource = iSize - 1;
+        break;
+      }
+      case '\\':
+        break;
+      case '>': {
+        for (std::string::iterator it = cSource.begin(); it != cSource.end();
+             it++) {
+          *it = toupper(*it);
+        }
+        break;
+      }
+      case '<': {
+        for (std::string::iterator it = cSource.begin(); it != cSource.end();
+             it++) {
+          *it = tolower(*it);
+        }
+        break;
+      }
+      case '=':
+        break;
+      default:
+        // cPurpose.push_back(letter);
+        cPurpose += letter;
+        break;
+    }
+  }
 }
 
-FX_BOOL util::byteToChar(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
-    int iSize = params.size();
-    if (iSize == 0)
-        return FALSE;
-    int nByte = params[0].ToInt();
-    unsigned char cByte = (unsigned char)nByte;
-    CFX_WideString csValue;
-    csValue.Format(L"%c", cByte);
-    vRet = csValue.c_str();
-    return TRUE;
+FX_BOOL util::scand(IFXJS_Context* cc,
+                    const CJS_Parameters& params,
+                    CJS_Value& vRet,
+                    CFX_WideString& sError) {
+  v8::Isolate* isolate = GetIsolate(cc);
+  int iSize = params.size();
+  if (iSize < 2)
+    return FALSE;
+
+  CFX_WideString sFormat = params[0].ToCFXWideString();
+  CFX_WideString sDate = params[1].ToCFXWideString();
+  double dDate = JS_GetDateTime();
+  if (sDate.GetLength() > 0) {
+    FX_BOOL bWrongFormat = FALSE;
+    dDate = CJS_PublicMethods::MakeRegularDate(sDate, sFormat, bWrongFormat);
+  }
+
+  if (!JS_PortIsNan(dDate)) {
+    CJS_Date date(isolate, dDate);
+    vRet = date;
+  } else {
+    vRet.SetNull();
+  }
+
+  return TRUE;
+}
+
+int64_t FX_atoi64(const char* nptr) {
+  int c;         /* current char */
+  int64_t total; /* current total */
+  int sign;      /* if '-', then negative, otherwise positive */
+
+  /* skip whitespace */
+  while (isspace((int)(unsigned char)*nptr))
+    ++nptr;
+
+  c = (int)(unsigned char)*nptr++;
+  sign = c; /* save sign indication */
+  if (c == '-' || c == '+')
+    c = (int)(unsigned char)*nptr++; /* skip sign */
+
+  total = 0;
+
+  while (isdigit(c)) {
+    total = 10 * total + (c - '0');  /* accumulate digit */
+    c = (int)(unsigned char)*nptr++; /* get next char */
+  }
+
+  return sign == '-' ? -total : total;
+}
+
+FX_BOOL util::byteToChar(IFXJS_Context* cc,
+                         const CJS_Parameters& params,
+                         CJS_Value& vRet,
+                         CFX_WideString& sError) {
+  int iSize = params.size();
+  if (iSize == 0)
+    return FALSE;
+  int nByte = params[0].ToInt();
+  unsigned char cByte = (unsigned char)nByte;
+  CFX_WideString csValue;
+  csValue.Format(L"%c", cByte);
+  vRet = csValue.c_str();
+  return TRUE;
 }