Home | History | Annotate | Download | only in test
      1 /*
      2  *
      3  *  BlueZ - Bluetooth protocol stack for Linux
      4  *
      5  *  Copyright (C) 2004-2010  Marcel Holtmann <marcel (at) holtmann.org>
      6  *
      7  *
      8  *  This program is free software; you can redistribute it and/or modify
      9  *  it under the terms of the GNU General Public License as published by
     10  *  the Free Software Foundation; either version 2 of the License, or
     11  *  (at your option) any later version.
     12  *
     13  *  This program is distributed in the hope that it will be useful,
     14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16  *  GNU General Public License for more details.
     17  *
     18  *  You should have received a copy of the GNU General Public License
     19  *  along with this program; if not, write to the Free Software
     20  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     21  *
     22  */
     23 
     24 #ifdef HAVE_CONFIG_H
     25 #include <config.h>
     26 #endif
     27 
     28 #include <stdio.h>
     29 #include <errno.h>
     30 #include <fcntl.h>
     31 #include <unistd.h>
     32 #include <stdlib.h>
     33 #include <string.h>
     34 
     35 #include "textfile.h"
     36 
     37 static void print_entry(char *key, char *value, void *data)
     38 {
     39 	printf("%s %s\n", key, value);
     40 }
     41 
     42 int main(int argc, char *argv[])
     43 {
     44 	char filename[] = "/tmp/textfile";
     45 	char key[18], value[512], *str;
     46 	unsigned int i, j, size, max = 10;
     47 	int fd;
     48 
     49 	size = getpagesize();
     50 	printf("System uses a page size of %d bytes\n\n", size);
     51 
     52 	fd = creat(filename, 0644);
     53 	if (ftruncate(fd, 0) < 0)
     54 		return -errno;
     55 
     56 	memset(value, 0, sizeof(value));
     57 	for (i = 0; i < (size / sizeof(value)); i++) {
     58 		if (write(fd, value, sizeof(value)) < 0)
     59 			return -errno;
     60 	}
     61 
     62 	close(fd);
     63 
     64 	sprintf(key, "11:11:11:11:11:11");
     65 	str = textfile_get(filename, key);
     66 
     67 	if (truncate(filename, 0) < 0)
     68 		return -errno;
     69 
     70 	sprintf(key, "00:00:00:00:00:00");
     71 	if (textfile_del(filename, key) < 0)
     72 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
     73 
     74 	memset(value, 0, sizeof(value));
     75 	if (textfile_put(filename, key, value) < 0)
     76 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
     77 
     78 	str = textfile_get(filename, key);
     79 	if (!str)
     80 		fprintf(stderr, "No value for %s\n", key);
     81 	else
     82 		free(str);
     83 
     84 	snprintf(value, sizeof(value), "Test");
     85 	if (textfile_put(filename, key, value) < 0)
     86 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
     87 
     88 	if (textfile_put(filename, key, value) < 0)
     89 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
     90 
     91 	if (textfile_put(filename, key, value) < 0)
     92 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
     93 
     94 	if (textfile_del(filename, key) < 0)
     95 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
     96 
     97 	str = textfile_get(filename, key);
     98 	if (str) {
     99 		fprintf(stderr, "Found value for %s\n", key);
    100 		free(str);
    101 	}
    102 
    103 	for (i = 1; i < max + 1; i++) {
    104 		sprintf(key, "00:00:00:00:00:%02X", i);
    105 
    106 		memset(value, 0, sizeof(value));
    107 		for (j = 0; j < i; j++)
    108 			value[j] = 'x';
    109 
    110 		printf("%s %s\n", key, value);
    111 
    112 		if (textfile_put(filename, key, value) < 0) {
    113 			fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
    114 			break;
    115 		}
    116 
    117 		str = textfile_get(filename, key);
    118 		if (!str)
    119 			fprintf(stderr, "No value for %s\n", key);
    120 		else
    121 			free(str);
    122 	}
    123 
    124 
    125 	sprintf(key, "00:00:00:00:00:%02X", max);
    126 
    127 	memset(value, 0, sizeof(value));
    128 	for (j = 0; j < max; j++)
    129 		value[j] = 'y';
    130 
    131 	if (textfile_put(filename, key, value) < 0)
    132 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
    133 
    134 	sprintf(key, "00:00:00:00:00:%02X", 1);
    135 
    136 	memset(value, 0, sizeof(value));
    137 	for (j = 0; j < max; j++)
    138 		value[j] = 'z';
    139 
    140 	if (textfile_put(filename, key, value) < 0)
    141 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
    142 
    143 	printf("\n");
    144 
    145 	for (i = 1; i < max + 1; i++) {
    146 		sprintf(key, "00:00:00:00:00:%02X", i);
    147 
    148 		str = textfile_get(filename, key);
    149 		if (str) {
    150 			printf("%s %s\n", key, str);
    151 			free(str);
    152 		}
    153 	}
    154 
    155 
    156 	sprintf(key, "00:00:00:00:00:%02X", 2);
    157 
    158 	if (textfile_del(filename, key) < 0)
    159 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
    160 
    161 	sprintf(key, "00:00:00:00:00:%02X", max - 3);
    162 
    163 	if (textfile_del(filename, key) < 0)
    164 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
    165 
    166 	printf("\n");
    167 
    168 	textfile_foreach(filename, print_entry, NULL);
    169 
    170 
    171 	sprintf(key, "00:00:00:00:00:%02X", 1);
    172 
    173 	if (textfile_del(filename, key) < 0)
    174 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
    175 
    176 	sprintf(key, "00:00:00:00:00:%02X", max);
    177 
    178 	if (textfile_del(filename, key) < 0)
    179 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
    180 
    181 	sprintf(key, "00:00:00:00:00:%02X", max + 1);
    182 
    183 	if (textfile_del(filename, key) < 0)
    184 		fprintf(stderr, "%s (%d)\n", strerror(errno), errno);
    185 
    186 	printf("\n");
    187 
    188 	textfile_foreach(filename, print_entry, NULL);
    189 
    190 	return 0;
    191 }
    192