/*****************************************************************************/ /* VCardsToXML Converter Tool for VPx500 VOIP Telephones */ /* */ /* (c) Manuel Schreiner http://www.schreinerman.de */ /* */ /* The following software is for demonstration purposes only. It is not */ /* fully tested, nor validated in order to fullfill its task under all */ /* circumstances. Therefore, this software or any part of it must only be */ /* used in an evaluation laboratory environment. */ /*****************************************************************************/ /* History */ /* Date Ver Author Description */ /* 06.04.2010 0.1b schreinerman first beta version */ /*****************************************************************************/ #include int main (int argc, const char * argv[]) { FILE*fp ; char mystring[1024]; //line wise read in buffer char outstring[1024]; //line result buffer char tmpstring[1024]; //temp buffer char * searchStr; //search attribute pointer char * str; //line read result fp = fopen ( argv[1],"r" ) ; //open file for read if( fp == NULL ) //could not open the file { puts ( "cannot open file" ) ; return 1; } printf("\r\n"); printf("\r\n"); printf("\r\n"); printf("\r\n"); int i=-12341; //initial Uid value while(1) { str = fgets(mystring,1024,fp); //read line if (strncmp(mystring,"BEGIN:VCARD",11) == 0) //VCARD Start { memset( outstring, '\0', sizeof(outstring) ); } if (strncmp(mystring,"END:VCARD",9) == 0) //VCARD Stop { i--; //decrement Uid printf("\r\n",i,outstring); //Printout Contact Line } if (strncmp(mystring,"ORG:",4) == 0) //Entry is organisation { searchStr = strchr(mystring,':'); searchStr++; strcpy(mystring,searchStr); memset( tmpstring, '\0', sizeof(tmpstring) ); strcat(outstring,"Company=\""); strncpy(tmpstring,mystring,(int)(strchr(mystring,';')-mystring)); strcat(outstring,tmpstring); strcat(outstring,"\" "); } if (strncmp(mystring,"TEL;type=HOME",13) == 0) //Entry is home telephone { searchStr = strchr(mystring,':'); searchStr++; strcpy(mystring,searchStr); memset( tmpstring, '\0', sizeof(tmpstring) ); strcat(outstring,"HomePhone=\""); strncpy(tmpstring,mystring,(int)(strchr(mystring,'\r')-mystring)); strcat(outstring,tmpstring); strcat(outstring,"\" "); } if (strncmp(mystring,"TEL;type=CELL",13) == 0) //Entry is cellphone { searchStr = strchr(mystring,':'); searchStr++; strcpy(mystring,searchStr); memset( tmpstring, '\0', sizeof(tmpstring) ); strcat(outstring,"HomeMobile=\""); strncpy(tmpstring,mystring,(int)(strchr(mystring,'\r')-mystring)); strcat(outstring,tmpstring); strcat(outstring,"\" "); } if (strncmp(mystring,"TEL;type=WORK:",14) == 0) //Entry is work telephone { searchStr = strchr(mystring,':'); searchStr++; strcpy(mystring,searchStr); memset( tmpstring, '\0', sizeof(tmpstring) ); strcat(outstring,"BusinessPhone=\""); strncpy(tmpstring,mystring,(int)(strchr(mystring,'\r')-mystring)); strcat(outstring,tmpstring); strcat(outstring,"\" "); } if (strncmp(mystring,"FN:",3) == 0) //Nickname { searchStr = strchr(mystring,':'); searchStr++; strcpy(mystring,searchStr); memset( tmpstring, '\0', sizeof(tmpstring) ); strcat(outstring,"FileAs=\""); strncpy(tmpstring,mystring,(int)(strchr(mystring,'\r')-mystring)); strcat(outstring,tmpstring); strcat(outstring,"\" "); } if (strncmp(mystring,"N:",2) == 0) //LastName;FirstName { if (strlen(mystring) > 8) { searchStr = strchr(mystring,':'); searchStr++; strcpy(mystring,searchStr); memset( tmpstring, '\0', sizeof(tmpstring) ); strcat(outstring,"LastName=\""); strncpy(tmpstring,mystring,(int)(strchr(mystring,';')-mystring)); strcat(outstring,tmpstring); strcat(outstring,"\" "); searchStr = strchr(mystring,';'); searchStr++; strcpy(mystring,searchStr); memset( tmpstring, '\0', sizeof(tmpstring) ); strcat(outstring,"FirstName=\""); strncpy(tmpstring,mystring,(int)(strchr(mystring,';')-mystring)); strcat(outstring,tmpstring); strcat(outstring,"\" "); } } if (str == 0) //EOF { break; } } fclose(fp); printf("\r\n"); printf("\r\n"); return 0; }