The R Project SVN R

Rev

Rev 6189 | Rev 6994 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6189 Rev 6201
Line 44... Line 44...
44
    checkArity(op, args);
44
    checkArity(op, args);
45
    pstacktop = R_PPStackTop;
45
    pstacktop = R_PPStackTop;
46
    R_ParseError = 0;
46
    R_ParseError = 0;
47
    R_ParseCnt = 0;
47
    R_ParseCnt = 0;
48
 
48
 
49
    PROTECT(file = coerceVector(CAR(args), STRSXP));
49
    PROTECT(file = coerceVector(CAR(args), STRSXP));	args = CDR(args);
50
    args = CDR(args);
-
 
51
 
-
 
52
    num = asInteger(CAR(args));
50
    num = asInteger(CAR(args));				args = CDR(args);
53
    args = CDR(args);
-
 
54
 
-
 
55
    PROTECT(text = coerceVector(CAR(args), STRSXP));
51
    PROTECT(text = coerceVector(CAR(args), STRSXP));	args = CDR(args);
56
    args = CDR(args);
-
 
57
 
-
 
58
    prompt = CAR(args);
52
    prompt = CAR(args);					args = CDR(args);
59
    if (prompt == R_NilValue)
53
    if (prompt == R_NilValue)
60
	PROTECT(prompt);
54
	PROTECT(prompt);
61
    else
55
    else
62
	PROTECT(prompt = coerceVector(prompt, STRSXP));
56
	PROTECT(prompt = coerceVector(prompt, STRSXP));
63
    args = CDR(args);
-
 
64
 
57
 
65
    if (length(text) > 0) {
58
    if (length(text) > 0) {
66
	if (num == NA_INTEGER)
59
	if (num == NA_INTEGER)
67
	    num = -1;
60
	    num = -1;
68
	s = R_ParseVector(text, num, &status);
61
	s = R_ParseVector(text, num, &status);
69
	if (status != PARSE_OK)
62
	if (status != PARSE_OK)
70
	    errorcall(call, "parse error");
63
	    errorcall(call, "parse error");
71
	UNPROTECT(3);
-
 
72
	return s;
-
 
73
    }
64
    }
74
    else if (isValidString(file)) {
65
    else if (isValidStringF(file)) {/* file != "" */
75
	if (num == NA_INTEGER)
66
	if (num == NA_INTEGER)
76
	    num = -1;
67
	    num = -1;
77
	fp = R_fopen(R_ExpandFileName(CHAR(STRING(file)[0])), "r");
68
	fp = R_fopen(R_ExpandFileName(CHAR(STRING(file)[0])), "r");
78
	if (!fp)
69
	if (!fp)
79
	    errorcall(call, "unable to open file for parsing");
70
	    errorcall(call, "unable to open file for parsing");
80
	s = R_ParseFile(fp, num, &status);
71
	s = R_ParseFile(fp, num, &status);
81
	fclose(fp);
72
	fclose(fp);
82
	if (status != PARSE_OK)
73
	if (status != PARSE_OK)
83
	    errorcall(call, "syntax error on line %d", R_ParseError);
74
	    errorcall(call, "syntax error on line %d", R_ParseError);
84
	UNPROTECT(3);
-
 
85
	return s;
-
 
86
    }
75
    }
87
    else {
76
    else {
88
	if (num == NA_INTEGER)
77
	if (num == NA_INTEGER)
89
	    num = 1;
78
	    num = 1;
90
	s = R_ParseBuffer(&R_ConsoleIob, num, &status, prompt);
79
	s = R_ParseBuffer(&R_ConsoleIob, num, &status, prompt);
91
	if (status != PARSE_OK)
80
	if (status != PARSE_OK)
92
	    errorcall(call, "parse error");
81
	    errorcall(call, "parse error");
93
	UNPROTECT(3);
-
 
94
	return s;
-
 
95
    }
82
    }
-
 
83
    UNPROTECT(3);
-
 
84
    return s;
96
}
85
}
97
 
86
 
98
 
87