provided code
This commit is contained in:
46
src/examples/lineup.c
Normal file
46
src/examples/lineup.c
Normal file
@@ -0,0 +1,46 @@
|
||||
/* lineup.c
|
||||
|
||||
Converts a file to uppercase in-place.
|
||||
|
||||
Incidentally, another way to do this while avoiding the seeks
|
||||
would be to open the input file, then remove() it and reopen
|
||||
it under another handle. Because of Unix deletion semantics
|
||||
this works fine. */
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <syscall.h>
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
char buf[1024];
|
||||
int handle;
|
||||
|
||||
if (argc != 2)
|
||||
exit (1);
|
||||
|
||||
handle = open (argv[1]);
|
||||
if (handle < 0)
|
||||
exit (2);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
int n, i;
|
||||
|
||||
n = read (handle, buf, sizeof buf);
|
||||
if (n <= 0)
|
||||
break;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
buf[i] = toupper ((unsigned char) buf[i]);
|
||||
|
||||
seek (handle, tell (handle) - n);
|
||||
if (write (handle, buf, n) != n)
|
||||
printf ("write failed\n");
|
||||
}
|
||||
|
||||
close (handle);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
Reference in New Issue
Block a user