case ',':{
case ',': case '"': case '\\':{
char* icalvalue_text_as_ical_string(icalvalue* value) {    char *str;    char *str_p;    char *rtrn;    const char *p;    size_t buf_sz;    int line_length;    line_length = 0;    buf_sz = strlen(((struct icalvalue_impl*)value)->data.v_string)+1;    str_p = str = (char*)icalmemory_new_buffer(buf_sz);    if (str_p == 0){      return 0;    }    for(p=((struct icalvalue_impl*)value)->data.v_string; *p!=0; p++){	switch(*p){	    case '\n': {		icalmemory_append_string(&str,&str_p,&buf_sz,"\\n");		line_length+=3;		break;	    }	    case '\t': {		icalmemory_append_string(&str,&str_p,&buf_sz,"\\t");		line_length+=3;		break;	    }	    case '\r': {		icalmemory_append_string(&str,&str_p,&buf_sz,"\\r");		line_length+=3;		break;	    }	    case '\b': {		icalmemory_append_string(&str,&str_p,&buf_sz,"\\b");		line_length+=3;		break;	    }	    case '\f': {		icalmemory_append_string(&str,&str_p,&buf_sz,"\\f");		line_length+=3;		break;	    }/* 	    case '\\': 	    case '"': */	    case ';':	    case ',':{		icalmemory_append_char(&str,&str_p,&buf_sz,'\\');		icalmemory_append_char(&str,&str_p,&buf_sz,*p);		line_length+=3;		break;	    }	    default: {		icalmemory_append_char(&str,&str_p,&buf_sz,*p);		line_length++;	    }	}	if (line_length > 65 && *p == ' '){	    icalmemory_append_string(&str,&str_p,&buf_sz,"\n ");	    line_length=0;	}	if (line_length > 75){	    icalmemory_append_string(&str,&str_p,&buf_sz,"\n ");	    line_length=0;	}    }    /* Assume the last character is not a '\0' and add one. We could       check *str_p != 0, but that would be an uninitialized memory       read. */    icalmemory_append_char(&str,&str_p,&buf_sz,'\0');    rtrn = icalmemory_tmp_copy(str);    icalmemory_free_buffer(str);    return rtrn;}