No, not nearly all of it -- I have 3200 LOC on top of a 6700 kB library. But those functions, together with 'glue code' for the library, can be compiled into the core application of the Pari library, called GP. So these functions provide stand-alone functionality.
Well, actually that's not true. They are called via this function:
Code:
GEN
bfile(GEN name, GEN v, GEN offset)
{
pari_sp ltop = avma;
GEN cur = gen_0, Anum = gen_0;
// If no v is given, fine; but if it is it must be a vector.
// Should this use is_vec_t(typ(v)) to allow t_COL as well?
if (v && typ(v) != t_VEC)
pari_err(typeer, "bfile");
if (!offset)
offset = gen_1;
else if (typ(offset) != t_INT)
pari_err(typeer, "bfile");
cur = subis(offset, 1);
if (typ(name) == t_INT)
{
name = gtovec(GENtoGENstr(name));
GEN p2;
while (glength(name) < 6)
{
p2 = cgetg(2, t_VEC);
gel(p2, 1) = strtoGENstr("0");
name = concat(p2, name);
}
Anum = concat(name, NULL); // "0","0","0","0","4","0" -> "000040"
name = concat(concat(strtoGENstr("b"), Anum), strtoGENstr(".txt"));
} else {
if (typ(name) != t_STR)
pari_err(typeer, "bfile");
// TODO: Try to extract a reasonable A-number, or just set to blank?
Anum = strtoGENstr("000000");
//Anum = concat(extract0(gtovec(name), stoi(126), NULL), NULL);
}
char* filename = GSTR(name);
if (!v)
return bfilein(filename);
FILE *f = fopen(filename, "r");
if (f)
pari_warn(warner, "File `%Ps' already exists. Appending terms..", name);
long l1 = lg(v);
pari_sp btop = avma, st_lim = stack_lim(btop, 1);
long i;
for (i = 1; i < l1; ++i)
{
GEN e = gel(v, i);
if (typ(e) != t_INT)
pari_err(typeer, "bfile");
if (cmpis(digits(e), 1000) > 0)
{
pari_warn(warner, "Next term has %Ps digits; exiting.\n", digits(e));
break;
}
write0(filename, mkvec3(cur = addis(cur, 1), strtoGENstr(" "), e));
if (low_stack(st_lim, stack_lim(btop, 1)))
cur = gerepilecopy(btop, cur);
}
pari_printf("%%H A%Ps Author, <a href=\"b%Ps.txt\">Table of n, a(n) for n = %Ps..%Ps</a>\n", Anum, Anum, offset, cur);
avma = ltop;
return gnil;
}
which is itself called by GP. But I thought those functions could be understood in isolation.
Overview:
GP is a programmable calculator; C functions can be exposed directly to the users.
Anything marked "GEN" is a bignum object that interacts with the Pari library.
GEN bfile(GEN, GEN, GEN) can be called by the user with input. It turns the first argument into a filename ("file.txt" -> "file.txt"; 123456 -> "b123456.txt"; 40 -> "b000040.txt"). If the latter two arguments are NULL (in this case, this means the user sent only one argument to the function through GP), then GEN bfile (char*) is called. (The file is first checked to make sure it exists.) Otherwise, this function creates a file at that location and outputs data to it.
GEN bfile(char*) takes a filename, opens the file, and reads in the data, storing it to a GEN object it will pass back to GP
I'm trying to compile and install both most recent version of 'make' and the
most recent version of 'openssh' on my Sparc20.
I've run into the following problems... and I don't know what they mean. Can
someone please help me resolve these issues?
I'm using the 'make' version that was... (5 Replies)
I renamed ld.so.1 on a Sun machine running Solaris 2.6. Now I cannot boot the system and I can use only very few commands in Maintenance Mode.
Can someone help me? (3 Replies)
Hello Friends,
I got stuck with fgets () & rewind() function .. Please need help..
Actually I am doing a like,
The function should read lines from a txt file until the function is called..
If the data from the txt file ends then it goes to the top and then again when the function is called... (1 Reply)
Assume client send the message " Hello ", i get output such as
Sent mesg: hello
Bytes Sent to Client: 6
bytes_received = recv(clientSockD, data, MAX_DATA, 0);
if(bytes_received)
{
send(clientSockD, data, bytes_received, 0);
data = '\0';... (2 Replies)
Hi all,
I have this method to read a string from a STDIN:
void readLine(char* inputBuffer){
fgets (inputBuffer, MAX_LINE, stdin);
fflush(stdin);
/* remove '\n' char from string */
if(strlen(inputBuffer) != 0)
inputBuffer = '\0';
}
All work fine but if i... (1 Reply)
Hello,
I am having problems with using less on
Linux version 2.6.18-92.1.17.el5 (brewbuilder@hs20-bc1-7.build.redhat.com) (gcc version 4.1.2 20071124 (Red Hat 4.1.2-42)). I am using csh but have the same problems on bash.
If I pipe something to less it works perfectly i.e. cat file | less... (9 Replies)
hello,
i'm trying to write a C-program that reads a file line by line.
(and searches each line for a given string)
This file is an special ASCII-database-file, with a lot of entries.
I checked the line with most length, and it was about 4000 characters.
With google i found several... (4 Replies)
Hi,
I have a string like this,
char str ="This, a sample string.\\nThis is the second line, \\n \\n, we will have one blank line";
if I want to use strtok() to seperate the string, which token should I use?
I tried "\n", "\\n", either not working.
peter (1 Reply)
Any ideas how to clear this error as it seems I dont understand if,do,while and els commands
#!/bin/ksh
set -x
print "This script creates test messages"
print "Please enter test case name"
read testcasename
echo $testcasename
skipfield=Y
while
print "Do you want to skip this field... (4 Replies)
Discussion started by: andrew.p.mcderm
4 Replies
LEARN ABOUT PHP
fgets
FGETS(3) 1 FGETS(3)fgets - Gets line from file pointerSYNOPSIS
string fgets (resource $handle, [int $length])
DESCRIPTION
Gets a line from file pointer.
PARAMETERS
o $handle
-The file pointer must be valid, and must point to a file successfully opened by fopen(3) or fsockopen(3) (and not yet closed by
fclose(3)).
o $length
- Reading ends when $length - 1 bytes have been read, or a newline (which is included in the return value), or an EOF (whichever
comes first). If no length is specified, it will keep reading from the stream until it reaches the end of the line.
Note
Until PHP 4.3.0, omitting it would assume 1024 as the line length. If the majority of the lines in the file are all larger
than 8KB, it is more resource efficient for your script to specify the maximum line length.
RETURN VALUES
Returns a string of up to $length - 1 bytes read from the file pointed to by $handle. If there is no more data to read in the file
pointer, then FALSE is returned.
If an error occurs, FALSE is returned.
CHANGELOG
+--------+-----------------------------+
|Version | |
| | |
| | Description |
| | |
+--------+-----------------------------+
| 4.3.0 | |
| | |
| | fgets(3) is now binary safe |
| | |
+--------+-----------------------------+
EXAMPLES
Example #1
Reading a file line by line
<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer;
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail
";
}
fclose($handle);
}
?>
NOTES
Note
If PHP is not properly recognizing the line endings when reading files either on or created by a Macintosh computer, enabling the
auto_detect_line_endings run-time configuration option may help resolve the problem.
Note
People used to the 'C' semantics of fgets(3) should note the difference in how EOF is returned.
SEE ALSO fgetss(3), fread(3), fgetc(3), stream_get_line(3), fopen(3), popen(3), fsockopen(3), stream_set_timeout(3).
PHP Documentation Group FGETS(3)