The R Project SVN R-packages

Rev

Rev 3252 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3251 mrmanese 1
#include <stdio.h>
2
#include <string.h>
3
#include "R.h"
4
#include "Rdefines.h"
5
#include "Rinternals.h"
6
#include "sqlite3.h"
7
 
8
SEXP sdf_create_sdf(SEXP df, SEXP name) {
9
    SEXP ret, tmp;
10
    char *basename, *filename; 
11
    int file_idx = 0;
12
 
13
    /* check if name exists */
14
    if (IS_CHARACTER(name)) {
15
        int baselen = strlen(CHAR(STRING_ELT(name,0)));
16
        basename = R_alloc(baselen, sizeof(char));
17
        strcpy(basename, CHAR(STRING_ELT(name,0)));
18
        R_alloc(baselen + 9, sizeof(char)); /* <name>10000.db\0 */
19
        sprintf(filename, "%s.db", basename);
20
    } else if (name == R_NilValue) {
21
        basename = "data";
22
        filename = R_alloc(13, sizeof(char)); /* data10000.db\0 */
23
        sprintf(filename, "%s.db", basename);
24
        file_idx = 1;
25
    } else {
26
        /* how to error??? */
27
        return R_NilValue;
28
    }
29
 
30
    FILE *f;
31
    do {
32
        f = fopen(filename, "rb+");
33
        if (f == NULL) break;
34
        fclose(f);
35
        sprintf(filename, "%s%d.db", file_idx, basename);
36
    } while (file_idx < 10000);
37
 
38
    /* found a free number */
39
    if (file_idx < 10000) {
40
        /* create a sdf db file */
41
            /* attach to workspace.db */
42
            /* create tables */
43
            /* add rows to workspace */
44
        /* register */
45
    }
46
 
47
    PROTECT(ret = NEW_LOGICAL(1));
48
    LOGICAL(ret)[0] = (name == R_NilValue);
49
    UNPROTECT(1);
50
    return ret;
51
}
52
 
53
 
54
SEXP sopen(SEXP name) {
55
    char *filename;
56
 
57
    if (IS_CHARACTER(name)) {
58
        filename = CHAR(STRING_ELT(name,0));
59
        Rprintf("%s\n", filename);
60
    }
61
    /* sqlite3 *db;
62
    int res = sqlite3_open(filename, &db); */
63
    SEXP ret;
64
    PROTECT(ret = NEW_LOGICAL(1));
65
    LOGICAL(ret)[0] = IS_CHARACTER(name);
66
    /* sqlite3_close(db); */ 
67
    UNPROTECT(1);
68
    return ret;
69
}