telsrc_filesrc.c
资源名称:dongruanC.rar [点击查看]
上传用户:xqing521
上传日期:2014-11-02
资源大小:1942k
文件大小:9k
源码类别:
嵌入式/单片机编程
开发平台:
C/C++
- /********************************************************************
- 挊嶌尃強桳幰 丗 WangHongjun@neusoft.com
- 僜乕僗僼傽僀儖柤 丗 telsrc_filesrc.c
- 撪梕 丗 Tel No. search(File search IF)
- 嶌惉擔丒幰 丗 2005.07.08 Wang Hongjun
- 廋惓擔丒幰 丗
- *********************************************************************/
- /*------------------------------------------------------------------*/
- /* */
- /* 僀儞僋儖乕僪僼傽僀儖晹暘 */
- /* */
- /*------------------------------------------------------------------*/
- #include "telsrc_in.h"
- /*------------------------------------------------------------------*/
- /* */
- /* 娭悢掕媊晹暘 */
- /* */
- /*------------------------------------------------------------------*/
- /********************************************************************/
- /* telsrc_crehandle_file娭悢(Tel Search handle create) */
- /* ----------------------------------------------------------------*/
- /* Input: */
- /* int : Search condition[IN] */
- /* */
- /* ----------------------------------------------------------------*/
- /* Output: */
- /* RETURN : 乮惓忢乯Telphone search handle */
- /* 乮堎忢乯NULL */
- /* */
- /* ----------------------------------------------------------------*/
- /* Outline: */
- /* Create telphone search handle (Data saved in file). */
- /* ----------------------------------------------------------------*/
- /* Others: */
- /* */
- /********************************************************************/
- H_TELSRC telsrc_crehandle_file(
- S_TELSRC_COND* pstTelSrcCond /* I/ Search condition */
- )
- {
- int iReadItem = 0;
- /* Result of read file */
- S_TELSRC* pstTelSrc = NULL;
- /* Telsearch struct */
- H_TELSRC hTelSrc = NULL;
- /* Telsearch class handle */
- FILE* pFile = NULL;
- /* File handle */
- S_TELSRC_DATA stTelSrcData;
- /* Exception prevention */
- if( NULL == pstTelSrcCond )
- {
- return (H_TELSRC)NULL;
- }
- /* Initialization */
- memset( &stTelSrcData, 0, (WORD)sizeof(stTelSrcData) );
- /* Search class handle area allocation */
- pstTelSrc = (S_TELSRC*)malloc( (WORD)sizeof(S_TELSRC) );
- if( NULL == pstTelSrc )
- {
- return (H_TELSRC)NULL;
- }
- /* Initialization */
- memset( pstTelSrc, 0, (WORD)sizeof(S_TELSRC) );
- /* Search condition copy */
- memcpy( &pstTelSrc->stTelSrcCond, pstTelSrcCond,
- (WORD)sizeof(S_TELSRC_COND) );
- /* Tel search data area allocation */
- pstTelSrc->pstTelSrcData
- = (S_TELSRC_DATA*)malloc( (WORD)sizeof(S_TELSRC_DATA) );
- if( NULL == pstTelSrc->pstTelSrcData )
- {
- return (H_TELSRC)NULL;
- }
- /* File teldat.dat open */
- pFile = fopen( "teldat.dat", "a+" );
- /* Exception prevention */
- if( NULL == pFile )
- {
- return (H_TELSRC)NULL;
- }
- /* Current data number get */
- while( 0 == feof( pFile ) )
- {
- /* Read 1 item from file */
- iReadItem = fread(
- &stTelSrcData, (WORD)sizeof(S_TELSRC_DATA), 1, pFile );
- if( iReadItem <= 0 )
- {
- pstTelSrc->iDataNum++;
- }
- }
- /* Tel No. search handle set */
- hTelSrc = (H_TELSRC)pstTelSrc;
- return hTelSrc;
- }
- /********************************************************************/
- /* telsrc_datareg_file娭悢(New data regist) */
- /* ----------------------------------------------------------------*/
- /* Input: */
- /* S_TELSRC* : Telphone search data area[IN] */
- /* S_TELSRC_DATA* : The Tel No. Data for searching[IN] */
- /* */
- /* ----------------------------------------------------------------*/
- /* Output: */
- /* RETURN : 乮惓忢乯RET_SUCCESS */
- /* 乮堎忢乯RET_FAILED */
- /* */
- /* ----------------------------------------------------------------*/
- /* Outline: */
- /* Regist new Tel No. */
- /* ----------------------------------------------------------------*/
- /* Others: */
- /* */
- /********************************************************************/
- int telsrc_datareg_file(
- S_TELSRC* pstTelSrc, /* I/ Telphone search data area */
- S_TELSRC_DATA* pstSrcData /* I/ The Tel No. Data for searching*/
- )
- {
- int iFWrite = 0;
- /* Data save result */
- FILE* pFile = NULL;
- /* File handle */
- /* Exception prevention */
- if( (NULL == pstSrcData) || (NULL == pstTelSrc) )
- {
- return RET_FAILED;
- }
- /* File teldat.dat open */
- pFile = fopen( "teldat.dat", "a+" );
- /* Exception prevention */
- if( NULL == pFile )
- {
- return RET_FAILED;
- }
- /* Current data ID set */
- pstSrcData->iNo = pstTelSrc->iDataNum;
- /* Write into file teldat.dat */
- iFWrite = fwrite( pstSrcData, sizeof(S_TELSRC_DATA), 1, pFile );
- if( 0 < iFWrite )
- {
- (pstTelSrc->iDataNum)++;
- }
- /* File close */
- fclose( pFile );
- return RET_SUCCESS;
- }
- /********************************************************************/
- /* telsrc_datasrc_file */
- /* ----------------------------------------------------------------*/
- /* Input: */
- /* S_TELSRC* : Telphone search data area[IN] */
- /* char* : The Tel No. for searching[IN] */
- /* */
- /* ----------------------------------------------------------------*/
- /* Output: */
- /* RETURN : 乮惓忢乯RET_SUCCESS */
- /* 乮堎忢乯RET_FAILED */
- /* */
- /* ----------------------------------------------------------------*/
- /* Outline: */
- /* Tel No. search. */
- /* ----------------------------------------------------------------*/
- /* Others: */
- /* */
- /********************************************************************/
- int telsrc_datasrc_file(
- S_TELSRC* pstTelSrc, /* I/ Telphone search data area */
- char* pcTelNo /* I/ The Tel No. for searching */
- )
- {
- int iReadItem = 0; /* Result of read file */
- int iSrcRslt= TELSRC_RESULT_NG; /* Search result */
- int iRet = TELSRC_RESULT_NG; /* Return value */
- int iCmpCnt = 0; /* Times for compare*/
- int iCurPos = 0; /* Current char pos */
- FILE* pFile = NULL; /* File handle */
- S_TELSRC_DATA stTelSrcData; /* Tel No. data info*/
- /* Exception prevention */
- if( NULL == pstTelSrc )
- {
- return TELSRC_RESULT_NG;
- }
- /* Initialization */
- memset( &stTelSrcData, 0, (WORD)sizeof(stTelSrcData) );
- /* File open */
- pFile = fopen( "teldat.dat", "r" );
- if( NULL == pFile )
- {
- printf( "nFailed to open file teldat.dat.n" );
- return TELSRC_RESULT_NG;
- }
- /* Searching */
- while( 0 == feof( pFile ) )
- {
- /* Read 1 item from file */
- iReadItem =
- fread( &stTelSrcData, sizeof(S_TELSRC_DATA), 1, pFile );
- if( iReadItem <= 0 )
- {
- /* File close */
- fclose( pFile );
- return TELSRC_RESULT_NG;
- }
- /* Compare, output the result */
- iCmpCnt = strlen( stTelSrcData.acTelNo ) - strlen(pcTelNo);
- for( iCurPos = 0; iCurPos <= iCmpCnt; iCurPos++ )
- {
- iSrcRslt = strncmp(
- stTelSrcData.acTelNo, pcTelNo, strlen(pcTelNo) );
- if( TELSRC_RESULT_OK == iSrcRslt )
- {
- if( (0 == iCurPos) && (0 == iCmpCnt) )
- {
- printf( "nSearch OK(Complete match)!n" );
- printf( "Tel No: %sn", stTelSrcData.acTelNo );
- printf( "Address: %sn", stTelSrcData.acName );
- iRet = iSrcRslt;
- }
- else
- {
- printf( "nSearch OK(Part match)!n" );
- printf( "Tel No: %sn", stTelSrcData.acTelNo );
- printf( "Address: %sn", stTelSrcData.acName );
- iRet = iSrcRslt;
- }
- break;
- }
- }
- }
- /* File close */
- fclose( pFile );
- /* Search NG, ouput the result */
- if( TELSRC_RESULT_NG == iRet )
- {
- printf( "nSearch NG! No corresponding Tel No.n" );
- }
- return iRet;
- }
- /********************************************************************/
- /* telsrc_datasrc_file */
- /* ----------------------------------------------------------------*/
- /* Input: */
- /* S_TELSRC* : Telphone search data area[IN] */
- /* char* : The Tel No. for searching[IN] */
- /* */
- /* ----------------------------------------------------------------*/
- /* Output: */
- /* RETURN : RET_SUCCESS */
- /* */
- /* ----------------------------------------------------------------*/
- /* Outline: */
- /* Tel No. search class handle free. */
- /* ----------------------------------------------------------------*/
- /* Others: */
- /* */
- /********************************************************************/
- int telsrc_freehandle_file(
- S_TELSRC* pstTelSrc /* I/ Telphone search data area */
- )
- {
- /* Exception prevention */
- if( NULL == pstTelSrc )
- {
- return RET_SUCCESS;
- }
- /* Tel No. search class handle area free */
- free( pstTelSrc );
- pstTelSrc = NULL;
- return RET_SUCCESS;
- }
- /* End of file-----------------------------------------------------*/