Changeset 41573 in vbox for trunk/src/VBox/Debugger/DBGCCmdHlp.cpp
- Timestamp:
- Jun 4, 2012 9:13:23 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 78351
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Debugger/DBGCCmdHlp.cpp
r41571 r41573 50 50 51 51 return rc; 52 } 53 54 55 /** 56 * Outputs a string in quotes. 57 * 58 * @returns The number of bytes formatted. 59 * @param pfnOutput Pointer to output function. 60 * @param pvArgOutput Argument for the output function. 61 * @param chQuote The quote character. 62 * @param psz The string to quote. 63 * @param cch The string length. 64 */ 65 static size_t dbgcStringOutputInQuotes(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, char chQuote, const char *psz, size_t cch) 66 { 67 size_t cchOutput = pfnOutput(pvArgOutput, &chQuote, 1); 68 69 while (cch > 0) 70 { 71 char *pchQuote = (char *)memchr(psz, chQuote, cch); 72 if (!pchQuote) 73 { 74 cchOutput += pfnOutput(pvArgOutput, psz, cch); 75 break; 76 } 77 size_t cchSub = pchQuote - psz + 1; 78 cchOutput += pfnOutput(pvArgOutput, psz, cchSub); 79 cchOutput += pfnOutput(pvArgOutput, &chQuote, 1); 80 cchSub -= cchSub; 81 psz += cchSub; 82 } 83 84 cchOutput += pfnOutput(pvArgOutput, &chQuote, 1); 85 return cchOutput; 52 86 } 53 87 … … 103 137 case DBGCVAR_TYPE_HC_PHYS: 104 138 return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "#%%%%%RHp", pVar->u.HCPhys); 105 case DBGCVAR_TYPE_STRING:106 return pfnOutput(pvArgOutput, pVar->u.pszString, (size_t)pVar->u64Range);107 139 case DBGCVAR_TYPE_NUMBER: 108 140 return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%llx", pVar->u.u64Number); 141 case DBGCVAR_TYPE_STRING: 142 return dbgcStringOutputInQuotes(pfnOutput, pvArgOutput, '"', pVar->u.pszString, (size_t)pVar->u64Range); 143 case DBGCVAR_TYPE_SYMBOL: 144 return dbgcStringOutputInQuotes(pfnOutput, pvArgOutput, '\'', pVar->u.pszString, (size_t)pVar->u64Range); 109 145 110 146 case DBGCVAR_TYPE_UNKNOWN: … … 149 185 case DBGCVAR_TYPE_HC_PHYS: 150 186 return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "#%%%%%RHp%s", pVar->u.HCPhys, szRange); 151 case DBGCVAR_TYPE_STRING:152 return pfnOutput(pvArgOutput, pVar->u.pszString, (size_t)pVar->u64Range);153 187 case DBGCVAR_TYPE_NUMBER: 154 188 return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%llx%s", pVar->u.u64Number, szRange); 189 case DBGCVAR_TYPE_STRING: 190 return dbgcStringOutputInQuotes(pfnOutput, pvArgOutput, '"', pVar->u.pszString, (size_t)pVar->u64Range); 191 case DBGCVAR_TYPE_SYMBOL: 192 return dbgcStringOutputInQuotes(pfnOutput, pvArgOutput, '\'', pVar->u.pszString, (size_t)pVar->u64Range); 155 193 156 194 case DBGCVAR_TYPE_UNKNOWN: … … 710 748 return VINF_SUCCESS; 711 749 712 case DBGCVAR_TYPE_STRING:713 750 case DBGCVAR_TYPE_SYMBOL: 714 751 { … … 720 757 } 721 758 759 case DBGCVAR_TYPE_STRING: 722 760 case DBGCVAR_TYPE_HC_FLAT: 723 761 case DBGCVAR_TYPE_HC_PHYS: … … 793 831 break; 794 832 case DBGCVAR_TYPE_SYMBOL: 833 /** @todo try convert as symbol? */ 795 834 case DBGCVAR_TYPE_STRING: 796 835 return VERR_DBGC_PARSE_INCORRECT_ARG_TYPE; /** @todo better error code! */ … … 813 852 switch (pVar->enmType) 814 853 { 854 case DBGCVAR_TYPE_SYMBOL: 815 855 case DBGCVAR_TYPE_STRING: 816 /** @todo add strcasecmp / stricmp wrappers to iprt/string.h. */ 817 if ( !strcmp(pVar->u.pszString, "true") 818 || !strcmp(pVar->u.pszString, "True") 819 || !strcmp(pVar->u.pszString, "TRUE") 820 || !strcmp(pVar->u.pszString, "on") 821 || !strcmp(pVar->u.pszString, "On") 822 || !strcmp(pVar->u.pszString, "oN") 823 || !strcmp(pVar->u.pszString, "ON") 824 || !strcmp(pVar->u.pszString, "enabled") 825 || !strcmp(pVar->u.pszString, "Enabled") 826 || !strcmp(pVar->u.pszString, "DISABLED")) 856 if ( !RTStrICmp(pVar->u.pszString, "true") 857 || !RTStrICmp(pVar->u.pszString, "on") 858 || !RTStrICmp(pVar->u.pszString, "no") 859 || !RTStrICmp(pVar->u.pszString, "enabled")) 827 860 { 828 861 *pf = true; 829 862 return VINF_SUCCESS; 830 863 } 831 if ( !strcmp(pVar->u.pszString, "false") 832 || !strcmp(pVar->u.pszString, "False") 833 || !strcmp(pVar->u.pszString, "FALSE") 834 || !strcmp(pVar->u.pszString, "off") 835 || !strcmp(pVar->u.pszString, "Off") 836 || !strcmp(pVar->u.pszString, "OFF") 837 || !strcmp(pVar->u.pszString, "disabled") 838 || !strcmp(pVar->u.pszString, "Disabled") 839 || !strcmp(pVar->u.pszString, "DISABLED")) 864 if ( !RTStrICmp(pVar->u.pszString, "false") 865 || !RTStrICmp(pVar->u.pszString, "off") 866 || !RTStrICmp(pVar->u.pszString, "yes") 867 || !RTStrICmp(pVar->u.pszString, "disabled")) 840 868 { 841 869 *pf = false; … … 853 881 854 882 case DBGCVAR_TYPE_GC_FAR: 855 case DBGCVAR_TYPE_SYMBOL:856 883 default: 857 884 return VERR_DBGC_PARSE_INCORRECT_ARG_TYPE;
Note:
See TracChangeset
for help on using the changeset viewer.