Witam wszystkich mam napisane dwa male programiki pod linuksa: uproszczona wersja polecenia cp i ls. Kody wyglądają nastepująco:

plik cp1.c:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>

#define BUFFERSIZE 4096
#define COPYMODE 0644

void my_error(char , char );

int main(int ac, char av[])
{
int in_fd, out_fd, n_chars;
char buf[BUFFERSIZE];
/
sprawdz argumenty /
if ( ac != 3 ){
fprintf( stderr, "usage: %s source destination\n",
av);
exit(1);
}

/ otworz pliki /
if ( (in_fd=open(av[1], O_RDONLY)) == -1 )
my_error("Cannot open ", av[1]);
if ( (out_fd=open(av[2],O_WRONLY|O_CREAT|O_TRUNC, COPYMODE)) == -1)
my_error( "Cannot creat", av[2]);

/ kopiuj pliki /
while ( (n_chars = read(in_fd , buf, BUFFERSIZE)) > 0 )
if ( write( out_fd, buf, n_chars ) != n_chars )
my_error("Write error to ", av[2]);
if ( n_chars == -1 )
my_error("Read error from ", av[1]);

/ zamknij pliki /
if ( close(in_fd) == -1 || close(out_fd) == -1 )
my_error("Error closing files","");
}

void my_error(char s1, char s2)
{
fprintf(stderr,"Error: %s ", s1);
perror(s2);
exit(1);
}

plik ls1.c:
/ ls1.c
Program wyswietla zawartosc katalogu biezacego
lub katalogu wskazanego arguementem
/
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <stdlib.h>

void do_ls(char []);

int main(int ac, char av[])
{
if ( ac == 1 )
do_ls( "." );
else
while ( --ac ){
printf("%s:\n",
++av );
do_ls( *av );
}
}

void do_ls( char dirname[] )
/*

  • wyswietl pliki w katalogu dirname
    /
    {
    DIR
    dir_ptr; / katalog /
    struct dirent direntp; / wpis w katalogu */

    if ( ( dir_ptr = opendir( dirname ) ) == NULL )
    fprintf(stderr,"ls1: cannot open %s\n", dirname);
    else
    {
    while ( ( direntp = readdir( dir_ptr ) ) != NULL )
    printf("%s\n", direntp->d_name );
    closedir(dir_ptr);
    }
    }

Mam takie pytanie odnośnie programu cp1: W jaki sposób mozna sprawdzić czy utworzony plik jest kopią pliku żródłowego?

Do programu ls1: Jak uzupełnić działanie polecenia aby sortować nazwy plików alfabetycznie(moze wczytac nazwy plikow do tablicy i uzyc funkcji qsort, tylko jak?)
Co zrobić żeby program wyswietlal pelny opis plików gdy podana zostanie opcja -l?
Jak nie wyswietlac nazw rozpoczynajacych sie od kropki, chyba ze zostanie podana opcja -a?

POMOCY!!! I z góry bardzo dziekuje.
A moze znacie adres jakies dobrej strony zwiazanej z programowaniem pod Linuksem?