15fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi/*
25fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * Copyright 2012 The Android Open Source Project
35fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
45fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * Licensed under the Apache License, Version 2.0 (the "License");
55fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * you may not use this file except in compliance with the License.
65fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * You may obtain a copy of the License at
75fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
85fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *      http://www.apache.org/licenses/LICENSE-2.0
95fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
105fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * Unless required by applicable law or agreed to in writing, software
115fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * distributed under the License is distributed on an "AS IS" BASIS,
125fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * See the License for the specific language governing permissions and
145fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * limitations under the License.
155fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi */
165fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi
175fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi#ifndef __WFC_UTIL_FCTRL_H__
185fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi#define __WFC_UTIL_FCTRL_H__
195fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi
205fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi/*
215fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * wfc_util_fset_buffer
225fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
235fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * return : void
245fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi */
255fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choivoid wfc_util_fset_buffer(char *pFileName, int positionStart, unsigned char *pNewValue, int newValueLength);
265fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi
275fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi/*
285fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * wfc_util_fget_buffer
295fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
305fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * return : it will return the length of the stored buffer value if procedure is success
315fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *          or will return 0 if not.
325fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi */
335fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choiextern int wfc_util_fget_buffer(char *pFileName, int positionStart, int lengthToRead, unsigned char *pValueBuff, int buffLength);
345fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi
355fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi/*
365fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * wfc_util_fset_string
375fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
385fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * The following format string will be added or updated to the file pFileName.
395fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * [pSTagString][pNewValueString][pETagString]
405fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
415fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * pFileName       : file name and path
425fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * pEndOfCfg       : tag string to notify the end of configuration file
435fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * pSTagString     : tag string to notify purpose of the value
445fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * pETagString     : tag string to notify the end of the value
455fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * pNewValueString : string to set for pSTagString
465fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
475fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * return : void
485fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi */
495fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choiextern void wfc_util_fset_string(char *pFileName, char *pEndOfCfg, char *pSTagString, char *pETagString, char *pNewValueString);
505fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi
515fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi/*
525fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * wfc_util_fget_string
535fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
545fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * Read value from the following format string in the file pFileName.
555fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * [pSTagString][string value to read][pETagString]
565fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
575fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * pFileName        : file name and path
585fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * pEndOfCfg        : tag string to notify the end of configuration file
595fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * pSTagString      : tag string to notify purpose of the value
605fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * pETagString      : tag string to notify the end of the value
615fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * pValueStringBuff : string buffer to get string value
625fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * stringBuffLength : the length of pValueStringBuff
635fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
645fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * return : it will return the length of the stored string value if procedure is success
655fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *          or will return 0 if not.
665fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi */
675fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choiextern int wfc_util_fget_string(char *pFileName, char *pEndOfCfg, char *pSTagString, char *pETagString, char *pValueStringBuff, int stringBuffLength);
685fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi
695fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi/*
705fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * wfc_util_ffile_check
715fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
725fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * check whether pDestFName file exist or not
735fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
745fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * pFileName   : file name and path
755fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * access_mode : R_OK | W_OK | X_OK | F_OK
765fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
775fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * return : it will return 0 if the file exist
785fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *          or will return -1 if not.
795fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi */
805fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choiextern int wfc_util_ffile_check(char *pDestFName, int access_mode);
815fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi
825fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi/*
835fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * wfc_util_ffile_check_copy
845fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
855fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * check whether pDestFName file exist if not it will copy from pSourceFName file
865fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *
875fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi * return : it will return 0 if procedure is success
885fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi *          or will return -1 if not.
895fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi */
905fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choiextern int wfc_util_ffile_check_copy(char *pDestFName, char *pSourceFName, mode_t mode,  uid_t uID, gid_t gID);
915fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi
925fd819dcca2ce41b0c7fa56d010dca6cbc3cc0d0Sungmin Choi#endif
93