/* printkeys: print key-value pairs, escaping values */ static const char *printkeys(const imc_data * data) { char *buf = imc_getsbuf(IMC_DATA_LENGTH); char temp[IMC_DATA_LENGTH]; int len = 0; int i; buf[0] = 0; for(i = 0; i < IMC_MAX_KEYS; i++) { if(!data->key[i]) { continue; } imc_sncpy(buf + len, data->key[i], IMC_DATA_LENGTH - len - 1); strcat(buf, "="); len = strlen(buf); if(!strchr(data->value[i], ' ')) { imc_sncpy(temp, escape2(data->value[i]), IMC_DATA_LENGTH - 1); } else { temp[0] = '"'; imc_sncpy(temp + 1, escape2(data->value[i]), IMC_DATA_LENGTH - 3); strcat(temp, "\""); } strcat(temp, " "); imc_sncpy(buf + len, temp, IMC_DATA_LENGTH - len); len = strlen(buf); } imc_shrinksbuf(buf); return buf; }
int main() { char str1[100]; char str2[] = "Hallo klappt das?\nVielleicht?"; char str3[] = "Test\\n\\tzwei"; escape(str1, str2); printf("Str2: \n%s\n", str2); printf("Str1: \n%s\n", str1); printf("Str3: \n%s\n", str3); escape2(str1, str3); printf("Str1: \n%s", str1); return 0; }