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?