Da, trebuie folosit make.Rasfoind manualul de SO am gasit titlul "Conversii Linux-DOS" si spre surprinderea mea am gasit rezolvarea problemei mele.Dar problema este ca unele linii din cod nu le inteleg.
Programul este format din 3 coduri surse.Primul se numeste Capete.C care, folosind un fisier temporar, elimina spatiile suplimentare de la sfarsitul fiecarei linii(si de la inceput).
#include <stdio.h>
#define MAX 255
main(int argc,char *argv[])
{
FILE *f;
int i, n=MAX;
char s[MAX], *TEMP = argv[1];
if((f=fopen(TEMP,"w")) == NULL)
exit(1);
for(;;)
{
if (fgets (s,MAX,stdin)==NULL)
break;
if (s[strlen(s)-1] == '\n')
s[ strlen(s)-1]=0;
for(i=0; s[i]== ' ';i++);
if ( i == strlen(s) )
s[0] = '\0';
else
{
if ( i < n )
n = i;
if (i)
{
for (i=strlen(s)-1;s[i] == ' '; i--);
s[++i]='\0';
}
}
fwrite ( s, 1, strlen (s)+1,f);
}
fclose(f);
f= fopen(TEMP, "r");
for (;;)
{
for (i=0;;i++)
{
if(fread (s+i,1,1,f) == 0)
goto STOP;
if (s[i] == '\0')
break;
}
if ( s[0] )
printf ("%s\n",s+n);
else
printf ("\n");
}
STOP:fclose(f);
}
Nu inteleg:
for(;;)
{
if (fgets (s,MAX,stdin)==NULL)
si
for (;;)
{
for (i=0;;i++)
{
if(fread (s+i,1,1,f) == 0)
Urmatorul cod realizeaza conversia DOS-Linux(doli.sh):
#!/bin/sh
if [$# -ne 3]
then
echo "Apel: doli dirDOS dirLINUX \"nume_fisiere_de_convertit\""
exit 1
fi
for i in $1 $2
do
if [ ! -d $i ]
then echo "\"$i"nu este director";exit 2
fi
done
PR=/tmp/$(UID)$$
DC=`PWD` /
cd $2
DIRLINUX=`pwd`/
cd $DC
cd $1
DIRDOS=`pwd`/
for i in `ls $3`
do
echo ${DIRDOS}$I "->"${DIRLINUX}$i
tr -d "\r" <$i | ${DC}capete ${PR}.temp >${DIRLINUX}$i
done
Nu inteleg:
PR=/tmp/$(UID)$$
si
tr -d "\r" <$i | ${DC}capete ${PR}.temp >${DIRLINUX}$i
Iar ultimul realizeaza conversia Linux-DOS(lido.sh):
#!/bin/sh
if [$# -ne 3]
then
echo "Apel: lido dirLINUX dirDOS \"nume_fisiere_de_convertit\""
exit 1
fi
for i in $1 $2
do
if [ ! -d $i ]
then echo "\"$i"nu este director";exit 2
fi
done
PR=/tmp/${UID}$$
DC=`pwd` /
cd $2
DIRDOS=`pwd`/
cd $DC
cd $1
DIRLINUX=`pwd`/
for i in `ls $3`
do
echo ${DIRLINUX}$i "->"${DIRDOS}$i
$(DC)capete $(PR).temp <$i | tr "\n" "\r" | \
sed 's/'` echo "\r"` '/'` echo "\r\n"` '/g' >$(DIRDOS)$i
done
Nu inteleg:
PR=/tmp/${UID}$$
si
$(DC)capete $(PR).temp <$i | tr "\n" "\r" | \
sed 's/'` echo "\r"` '/'` echo "\r\n"` '/g' >$(DIRDOS)$i
Multumesc!