PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LCOV - code coverage report
Current view: top level - ext/dba - dba_inifile.c (source / functions) Hit Total Coverage
Test: PHP Code Coverage Lines: 56 65 86.2 %
Date: 2014-04-16 Functions: 9 11 81.8 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :    +----------------------------------------------------------------------+
       3             :    | PHP Version 5                                                        |
       4             :    +----------------------------------------------------------------------+
       5             :    | Copyright (c) 1997-2014 The PHP Group                                |
       6             :    +----------------------------------------------------------------------+
       7             :    | This source file is subject to version 3.01 of the PHP license,      |
       8             :    | that is bundled with this package in the file LICENSE, and is        |
       9             :    | available through the world-wide-web at the following url:           |
      10             :    | http://www.php.net/license/3_01.txt                                  |
      11             :    | If you did not receive a copy of the PHP license and are unable to   |
      12             :    | obtain it through the world-wide-web, please send a note to          |
      13             :    | license@php.net so we can mail you a copy immediately.               |
      14             :    +----------------------------------------------------------------------+
      15             :    | Author: Marcus Boerger <helly@php.net>                               |
      16             :    +----------------------------------------------------------------------+
      17             :  */
      18             : 
      19             : /* $Id$ */
      20             : 
      21             : #ifdef HAVE_CONFIG_H
      22             : #include "config.h"
      23             : #endif
      24             : 
      25             : #include "php.h"
      26             : 
      27             : #if DBA_INIFILE
      28             : #include "php_inifile.h"
      29             : 
      30             : #include "libinifile/inifile.h"
      31             : 
      32             : #ifdef HAVE_UNISTD_H
      33             : #include <unistd.h>
      34             : #endif
      35             : #include <sys/types.h>
      36             : #include <sys/stat.h>
      37             : #include <fcntl.h>
      38             : 
      39             : #define INIFILE_DATA \
      40             :         inifile *dba = info->dbf
      41             : 
      42             : #define INIFILE_GKEY \
      43             :         key_type ini_key; \
      44             :         if (!key) { \
      45             :                 php_error_docref(NULL TSRMLS_CC, E_WARNING, "No key specified"); \
      46             :                 return 0; \
      47             :         } \
      48             :         ini_key = inifile_key_split((char*)key) /* keylen not needed here */
      49             : 
      50             : #define INIFILE_DONE \
      51             :         inifile_key_free(&ini_key)
      52             : 
      53           9 : DBA_OPEN_FUNC(inifile)
      54             : {
      55           9 :         info->dbf = inifile_alloc(info->fp, info->mode == DBA_READER, info->flags&DBA_PERSISTENT TSRMLS_CC);
      56             : 
      57           9 :         return info->dbf ? SUCCESS : FAILURE;
      58             : }
      59             : 
      60           9 : DBA_CLOSE_FUNC(inifile)
      61             : {
      62           9 :         INIFILE_DATA;
      63             : 
      64           9 :         inifile_free(dba, info->flags&DBA_PERSISTENT);
      65           9 : }
      66             : 
      67          16 : DBA_FETCH_FUNC(inifile)
      68             : {
      69             :         val_type ini_val;
      70             : 
      71          16 :         INIFILE_DATA;
      72          16 :         INIFILE_GKEY;
      73             : 
      74          16 :         ini_val = inifile_fetch(dba, &ini_key, skip TSRMLS_CC);
      75          16 :         *newlen = ini_val.value ? strlen(ini_val.value) : 0;
      76          16 :         INIFILE_DONE;
      77          16 :         return ini_val.value;
      78             : }
      79             : 
      80          21 : DBA_UPDATE_FUNC(inifile)
      81             : {
      82             :         val_type ini_val;
      83             :         int res;
      84             : 
      85          21 :         INIFILE_DATA;
      86          21 :         INIFILE_GKEY;
      87             :         
      88          21 :         ini_val.value = val;
      89             :         
      90          21 :         if (mode == 1) {
      91          17 :                 res = inifile_append(dba, &ini_key, &ini_val TSRMLS_CC);
      92             :         } else {
      93           4 :                 res = inifile_replace(dba, &ini_key, &ini_val TSRMLS_CC);
      94             :         }
      95          21 :         INIFILE_DONE;
      96          21 :         switch(res) {
      97             :         case -1:
      98           0 :                 php_error_docref1(NULL TSRMLS_CC, key, E_WARNING, "Operation not possible");
      99           0 :                 return FAILURE;
     100             :         default:
     101             :         case 0:
     102          21 :                 return SUCCESS;
     103             :         case 1:
     104           0 :                 return FAILURE;
     105             :         }
     106             : }
     107             : 
     108          12 : DBA_EXISTS_FUNC(inifile)
     109             : {
     110             :         val_type ini_val;
     111             : 
     112          12 :         INIFILE_DATA;
     113          12 :         INIFILE_GKEY;
     114             :         
     115          12 :         ini_val = inifile_fetch(dba, &ini_key, 0 TSRMLS_CC);
     116          12 :         INIFILE_DONE;
     117          12 :         if (ini_val.value) {
     118           7 :                 inifile_val_free(&ini_val);
     119           7 :                 return SUCCESS;
     120             :         }
     121           5 :         return FAILURE;
     122             : }
     123             : 
     124           8 : DBA_DELETE_FUNC(inifile)
     125             : {
     126             :         int res;
     127           8 :         zend_bool found = 0;
     128             : 
     129           8 :         INIFILE_DATA;
     130           8 :         INIFILE_GKEY;
     131             : 
     132           8 :         res =  inifile_delete_ex(dba, &ini_key, &found TSRMLS_CC);
     133             : 
     134           8 :         INIFILE_DONE;
     135           8 :         return (res == -1 || !found ? FAILURE : SUCCESS);
     136             : }
     137             : 
     138           4 : DBA_FIRSTKEY_FUNC(inifile)
     139             : {
     140           4 :         INIFILE_DATA;
     141             : 
     142           4 :         if (inifile_firstkey(dba TSRMLS_CC)) {
     143           4 :                 char *result = inifile_key_string(&dba->curr.key);
     144           4 :                 *newlen = strlen(result);
     145           4 :                 return result;
     146             :         } else {
     147           0 :                 return NULL;
     148             :         }
     149             : }
     150             : 
     151          14 : DBA_NEXTKEY_FUNC(inifile)
     152             : {
     153          14 :         INIFILE_DATA;
     154             :         
     155          14 :         if (!dba->curr.key.group && !dba->curr.key.name) {
     156           0 :                 return NULL;
     157             :         }
     158             : 
     159          14 :         if (inifile_nextkey(dba TSRMLS_CC)) {
     160          10 :                 char *result = inifile_key_string(&dba->curr.key);
     161          10 :                 *newlen = strlen(result);
     162          10 :                 return result;
     163             :         } else {
     164           4 :                 return NULL;
     165             :         }
     166             : }
     167             : 
     168           0 : DBA_OPTIMIZE_FUNC(inifile)
     169             : {
     170             :         /* dummy */
     171           0 :         return SUCCESS;
     172             : }
     173             : 
     174           0 : DBA_SYNC_FUNC(inifile)
     175             : {
     176             :         /* dummy */
     177           0 :         return SUCCESS;
     178             : }
     179             : 
     180           2 : DBA_INFO_FUNC(inifile)
     181             : {
     182           2 :         return estrdup(inifile_version());
     183             : }
     184             : 
     185             : #endif
     186             : 
     187             : /*
     188             :  * Local variables:
     189             :  * tab-width: 4
     190             :  * c-basic-offset: 4
     191             :  * End:
     192             :  * vim600: sw=4 ts=4 fdm=marker
     193             :  * vim<600: sw=4 ts=4
     194             :  */

Generated by: LCOV version 1.10

Generated at Wed, 16 Apr 2014 12:47:46 +0000 (8 days ago)

Copyright © 2005-2014 The PHP Group
All rights reserved.