120
Pascal 4.0 User’s Guide
6
Avoid constructs that rely on strings being in static variable storage. For
example, you could use
mktemp
(3) in Pascal as follows:
This use is incorrect, since
mktemp()
modifies its argument. Instead, use the C
library routine
strncpy()
(see
string
(3)) to copy the string constant to a
declared
char
array variable, as in:
The commands to compile and
execute
StrVar.c
and
StrVarMain.p
hostname% cc -c StrVar.c
hostname% pc StrVar.o StrVarMain.p
hostname% a.out
abcdefghij
abcdefghijklmnopqrtstuvwxyz
varstr
length(v) = 6
Incorrect use of string in static
variable storage
tmp := mktemp('/tmp/eph.xxxxxx')
Correct solution using the C
library routine
strncpy()
program Use_mktemp ;
procedure strncpy( var dest: univ string ;
var srce: univ string ;
length: integer) ; external c ;
procedure mktemp(var dest: univ string); external c;
...
var path: string ;
begin
...
strncpy( path, '/tmp/eph.xxxxxx', sizeof(path)) ;
mktemp( path ) ;
...
end .
Summary of Contents for SunSoft Pascal 4.0
Page 14: ...xiv Pascal 4 0 User s Guide ...
Page 16: ...xvi Pascal 4 0 User s Guide ...
Page 30: ...6 Pascal 4 0 User s Guide 1 ...
Page 160: ...136 Pascal 4 0 User s Guide 6 ...
Page 268: ...244 Pascal 4 0 User s Guide 11 ...
Page 320: ...296 Pascal 4 0 User s Guide B ...
Page 331: ...Index 307 ...
Page 333: ......