Teve um Autríaco que desenvolveu um código em Pearl capaz de formatar as linguagens de programação; Ada, Awk, C, C++, HTML, Java, JavaScript, m4, Makefile, Pascal, Perl, SQL, ruby e povray em HTML Coloquei essas informações de maneira melhor organizada em: http://br.geocities.com/danilomatias@ymail.com/code/code2html/index/123456.html Ainda é possível conferir o resultado desse script de maneira online no link: http://www.palfrader.org/code2html/code2html.html A documentação oficial se encontra em: http://www.palfrader.org/code2html/manual.html A página oficial do projeto é: http://www.palfrader.org/code2html/ Na página: http://gnu.fyxm.net/directory/devel/conversion/code2html.html Achei o link para baixar o código fonte e executar em: http://www.palfrader.org/code2html/all/code2html-0.9.1.tar.gz Descompatei entrei na pasta que estava o código fonte e testei o programa. De uma maneira geral: A sintaxe geral é: ./code2html -nvL lingagem_de_programaçao arquivo.lingagem_de_programaçao arquivo_destino.html Teste com o exemplo abaixo: ./code2html -nvL c 3.c 3_c.html Onde: c é a linguagem [c, java, paskal, pearl, php, ...] 3.c o nome do Arquivo.c 3_c.html o nome do arquivo .html A página do cara que desenvolveu o código é (Peter Palfrader): http://www.palfrader.org/ o Resultado (código convertido) foi: |
|
domingo, 7 de setembro de 2008
Colocando códigos (code2HTML) ; Ada, Awk, C, C++, HTML, Java, JavaScript, m4, Makefile, Pascal, Perl, SQL, ruby e povray em HTML com CODE2HTML
sábado, 6 de setembro de 2008
Juntando vários arquivos .pdf em um só com o auxílio de um código em lLPO C e a ferramenta pdftk
O programa converte todos os arquivos .pdf da pasta com excessão aqueles com espacos no nome, por exemplo "exemplo 1.pdf"
Copie oo código c e salve como 1.c
Complile, cc 1.c -o 1 e execute com ./1
Pronto basta procurar o arquivo PDFTK ...
Ai vai o código:
Eu ia colocar em c mas como nao da pra colocar vai em xml
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define LEITURA 0
#define ESCRITA 1
#define LEITURAESCRITA
2
#define TAMNOME 500
/*===================================================================*/
/*===================================================================*/
void
mostraRespricoes();
int open1(char *file,
int oflag );
void prog();
char *gettextoarq(int
fd, char *buf, int buf_size, char *texto);
char
*gettextoarq1Somenteleitura( char *arq, char *texto);
char
***getLinhasSomenteleitura(char *arq, int *j, char ***texto4);
void mostraLinhas(char
*arq, int j);
char
*getLinhaISomenteleitura(char *arq, int *j, char *linha, int I);
char
*gettextoarq1Somenteleitura1( char *arq);
char
*getLinhaISomenteleitura1(char *arq, int I);
int
getNumeroLinhaString(char *str);
int contachar(char
string[], char letra);
void mostraLinhas1(char
*arq);
int
getNumeroLinhaStringArquivo(char *arq);
char *strpdftk(char
*arq);
void limpaStr(char
*Str);
char
**getvetorLinhasArg(char *arq);
void mostraLinhas2(char
*arq);
char
**getvetorLinhasArg1(char *arq);
char
**getvetorLinhasArg1(char *arq);
void mostraLinhas3(char
*arq);
int
getimaiorStringemArq(char *arq);
int
get_Strlen_da_maior_String_em_Arq(char *arq);
char
***alocar_vetor_string_arq(char *arq);
char
***get_vetor_string_arq(char *arq);
void mostraLinhas4(char
*arq);
char
***alocar_vetor_string_arq(char *arq);
char
substituiEspacoPor_(char *str);
char *subs_str(char
*string, char *substring, char *nova);
/*===================================================================*/
/*===================================================================*/
/*===================================================================*/
char
***get_vetor_string_arq(char *arq)
{
int l, i, j, k, m, n,
o, num_linhas;
char ***vet1, **vet;
vet1=NULL; vet=NULL;
vet1=alocar_vetor_string_arq(arq);
vet=*vet1;/* tenho o
vetor de strings alocadinha basta preenchê-lo*/
num_linhas=getNumeroLinhaStringArquivo(arq);
for(i=0;
i<num_linhas; i++)
{
sprintf(vet[i] ,
"%s", getLinhaISomenteleitura1(arq, i) );
}
return vet1;
}
/*===================================================================*/
/*===================================================================*/
void mostraLinhas4(char
*arq)
{
int l, i, nl;
char **vet, ***vet1;
vet=NULL; vet1=NULL;
vet1=get_vetor_string_arq(arq);
vet=*vet1;
nl=getNumeroLinhaStringArquivo(arq);
for(i=0; i <
nl;i++)
{
printf("\n
vet[%i]: %s", i, vet[i]);
}
printf("\n\n
************************************\n\n");
}
/*===================================================================*/
void mostraLinhas3(char
*arq)
{
int l, i;
char **vet;
vet=NULL;
vet=getvetorLinhasArg1(arq);
if(vet==NULL){printf("\n Deu problema no mostra linha3 ver e
nulo !\n");}
//t8=getLinhaISomenteleitura1(arq,
9);
/*printf("\n
Passemos a i=getNumeroLinhaStringArquivo(arq);\n");*/
i=getNumeroLinhaStringArquivo(arq);
//printf("
********* Mostrando as %i linhas do arquivo %s ****\n\n", i,
arq);
printf("Linhas(vet)[
%i ]{%i}: %s \n", 0, strlen(vet[0]), vet[0]);
printf("Linhas(vet)[
%i ]{%i}: %s \n", 1, strlen(vet[1]), vet[1]);
/*
for(l=0; l < i;
l++)
{
printf("Linhas(vet)[
%i ]{%i}: %s \n", l, strlen(vet[l]), vet[l]);
}*/
printf("\n\n
************************************\n\n");
}
/*===================================================================*/
/*===================================================================*/
void mostraLinhas2(char
*arq)
{
int l, i;
char **vet;
vet=getvetorLinhasArg(arq);
//t8=getLinhaISomenteleitura1(arq,
9);
i=getNumeroLinhaStringArquivo(arq);
//printf("
********* Mostrando as %i linhas do arquivo %s ****\n\n", i,
arq);
for(l=0; l < i;
l++)
{
printf("Linhas(vet)[
%i ]{%i}: %s \n", l, strlen(vet[i]), vet[i]);
}
printf("\n\n
************************************\n\n");
}
/*===================================================================*/
int
get_Strlen_da_maior_String_em_Arq(char *arq)
{
int l, i, k, la, bb,
maior, idomaior;
char **vet,
str[TAMNOME];
k=0;maior=0;
for(i=0;
i<getNumeroLinhaStringArquivo(arq);i++)
{
k =
strlen(getLinhaISomenteleitura1(arq, i));
if(k>=maior){maior=k;idomaior=i;}
}
return maior;
}
/*===================================================================*/
char
***alocar_vetor_string_arq(char *arq)
{
int tam1, tam2, i,
j;
char **vetor;
tam2 =
get_Strlen_da_maior_String_em_Arq(arq);
tam2=tam2*sizeof(char);
tam1=getNumeroLinhaStringArquivo(arq);
if((vetor=(char**)malloc(tam1*sizeof(char*)))==NULL)
{
printf("\n Nao
foi possivel alocar as linhas do de vetor de strings para do arquivo
\n");
return NULL;
}
for(i=0;
i<tam1;i++)
{
if((vetor[i]=(char*)malloc(tam2))==NULL)
{
printf("\n
Nao foi possivel alocar as colunas do vetor de strings para do
arquivo \n");
for(--i;i>=0;i--)
{
free(vetor[i]);
}
free(vetor);
return NULL;
}
}
return &vetor;
}
/*===================================================================*/
int
getimaiorStringemArq(char *arq)
{
int l, i, k, la, bb,
maior, idomaior;
char **vet,
str[TAMNOME];
k=0;maior=0;
for(i=0;
i<getNumeroLinhaStringArquivo(arq);i++)
{
k =
strlen(getLinhaISomenteleitura1(arq, i));
if(k>=maior){maior=k;idomaior=i;}
}
return idomaior;
}
/*===================================================================*/char
**getvetorLinhasArg1(char *arq)
{
int l, i, k, la, bb;
char **vet,
str[TAMNOME];
/* o probela e alocar
o vetor para armazenar*/
i=getNumeroLinhaStringArquivo(arq);
vet=(char**)malloc(i*sizeof(char*));
if(vet==NULL){printf("\n
Nao foi possivel alocar as linhas do vetor de linhas \n");
return NULL;}
for(la=0; la < i;
la++)
{
strcpy(str
,getLinhaISomenteleitura1(arq, la));
k = strlen(str);
/*printf("\n k
= strlen(str);: %i\n st: %s\n", k, str);*/
vet[la]=(char*)malloc(k*sizeof(char));if(vet[la]==NULL){printf("\n
Nao foi possivel alocar as colunas do vetor de linhas \n");
free(vet);return NULL;}
sprintf(vet[la],
"%s", str);
for(bb=0; bb<=la;
bb++)
printf("%s \n
", vet[bb]);
//strcpy(vet[l],
str);
// if((l%2)!=0){
//printf("
%i%%3=%i\nLinhas(vet[%i])[ %i ]: %s \n str : %s \n\n",l, l%3, l,
l, vet[l], str);
//}
}
//printf("
vet[1-4]: %s %S %s %S \n\n", vet[0], vet[1], vet[2], vet[4]);
printf(" Agora vem
a montagem do vetor vet : %s \n\n", vet);
/* for(la=0; la <
i; la++)
{
printf("\n
vet[%i]: %s\n ", la, vet[la]);
}*/
return vet;
}
/*===================================================================*/
void mostraLinhas1(char
*arq)
{
int l, i;
//t8=getLinhaISomenteleitura1(arq,
9);
i=getNumeroLinhaStringArquivo(arq);
printf("
Mostrando as %i linhas do arquivo \n\n", i);
for(l=0; l < i;
l++)
{
printf("Linhas[
%i ]: %s \n", l, getLinhaISomenteleitura1(arq, l));
}
printf("\n\n
************************************\n\n");
}
/*===================================================================*/
char
**getvetorLinhasArg(char *arq)
{
int l, i, k;
char **vet, *str;
l=getNumeroLinhaStringArquivo(arq);
//printf("
Mostrando as %i linhas do arquivo \n\n", l);
vet=(char**)malloc(l*sizeof(char));
if(vet==NULL){printf("\n
Nao foi possivel alocar as linhas do vetor de linhas \n");
return NULL;}
for(i=0; i < l;
i++)
{
strcpy(str
,getLinhaISomenteleitura1(arq, i));
k = strlen(str);
vet[i]=(char*)malloc(k*sizeof(char));
if(vet[i]==NULL){printf("\n
Nao foi possivel alocar as colunas do vetor de linhas \n");
return NULL;}
strcpy(vet[i] ,
str);
printf("vet[ %i
]: %s \n", l, vet[i]);
}
//printf("\n\n
************************************\n\n");
return vet;
}
/*===================================================================*/
/*===================================================================*/
void mostraLinhas(char
*arq, int j)
{
int l;
//t8=getLinhaISomenteleitura1(arq,
9);
printf("\n\n
Mostrando as %i linhas do arquivo \n\n", j);
for(l=0; l < j;
l++)
{
printf("Linhas[
%i ]: %s \n", l, getLinhaISomenteleitura1(arq, l));
}
printf("\n\n
************************************\n\n");
printf(" %s \n O
Arquivo tem %i linhas", gettextoarq1Somenteleitura1(arq),
getNumeroLinhaString(gettextoarq1Somenteleitura1(arq)));/**//**/
printf("\n\n
************************************\n\n");
}
/*===================================================================*/
void mostraRespricoes()
{
printf(" 1 - O
arquivo arqpdf.txt tem que estar no mesmo diretorio \n ");
printf(" 2 - Os
arquivos a serem convertidos devem estar no mesmo diretorio \n");
printf(" 3 - O
arquivo gerado tera o nome de \'PDFTK921_ ...pdf\'\n");
printf(" 4 - Os
nomes dos arquivos a serem unidos nao podem possuir espacoe em
branco, pelo menos por enquanto\n");
}
/*===================================================================*/
/*===================================================================*/
int contachar(char
string[], char letra)
{
int contador,
tamanho, ocorrencia = 0;
tamanho =
strlen(string);
for(contador=1;contador <= tamanho;contador++)
if(string[contador] == letra)
ocorrencia++;
return(ocorrencia);
}
/*===================================================================*/
int
getNumeroLinhaString(char *str)
{
/*onde str é a
string com várias linhas*/
return
contachar(str, '\n');
}
/*===================================================================*/
int
getNumeroLinhaStringArquivo(char *arq)
{
/*onde str é a
string com várias linhas*/
int i;
char *s1;
s1=gettextoarq1Somenteleitura1(arq);
i=getNumeroLinhaString(s1);
i=i-1;
return i;
}
/*===================================================================*/
/* fazer uma função
que retorne somente a string da linha,
* deve-se passar a
linha e um ponteiro onde string estara*/
char
*getLinhaISomenteleitura1(char *arq, int I)
{
int i;
char text[10000],
*t1, *t2, charater[500], *ta1;
t1=gettextoarq1Somenteleitura1(arq);
sprintf(text, "%s",
t1);
/* agora com a
string t1 tendo uma copia em "text"
* da pra ficar
mais aliviado, pois nao perderemos o
* conteudo do
arquivo, os nomes dos documentos*/
//res = strtok(s,
delim);
t2=strtok(text,
"\n");
//sprintf(texto[0],
"%s", t2);
//printf(" \n
O conteudo da variaveis text (antes de retornar a linha) e %s \n Ja o
conteudo de t2 e %s \n \n", text, t2);
if(I==0)
{
return t2;
}
for(i=1;(i<=I)&&
(t2 != NULL); i++)
{ //res =
strtok(NULL, delim);
t2=strtok(NULL,
"\n");
sprintf(charater,
"%s", t2);
//printf("
\n O conteudo do arquivo na linha %i e %s \n Ja o conteudo de t2 e
%s \n Ja o conteudo de charater e %s \n", i, text, t2,
charater);
if(i==I)
{ strcpy(ta1,
charater);
return t2;
}
if(t2==NULL)
{
printf("
\n A linha pedida para a funcao e maior que a quanidade de linhas no
arquivo! \n Entre com um valor de linha menor que o numero de linhas
do arquivo!\n ");
return NULL;
}
}
if(i==I)
{
strcpy(ta1,
charater);
return t2;
}
return NULL;
}
/*===================================================================*/
void limpaStr(char
*Str)
{
int i, j;
i=strlen(Str);
for(j=i-1;j>=0;j--)
{
/*Str[j]=NULL*/;strcpy((*(Str+j)),"
");
}
}
/*===================================================================*/
/* fazer uma função
que retorne somente a string da linha,
* deve-se passar a
linha e um ponteiro onde string estara*/
char
*getLinhaISomenteleitura(char *arq, int *j, char *linha, int I)
{
int i;
char texto[500][500],
text[10000], *t1, *t2, charater[500];
printf("\n
Agora entrarei na funcao t1=gettextoarq1Somenteleitura(arq, t1);\n");
t1=gettextoarq1Somenteleitura1(arq);
sprintf(text, "%s",
t1);
/* agora com a
string t1 tendo uma copia em "text"
* da pra ficar
mais aliviado, pois nao perderemos o
* conteudo do
arquivo, os nomes dos documentos*/
t2=strtok(text,
"\n");
sprintf(texto[0],
"%s", t2);
*j=i;
if(I==0)
{
if(/*
*linha==NULL */strcmp(linha,NULL)==0)
{/* se estiver
passando somente um
* ponteiro sem
nada , NULL*/
linha=texto[0];
}
sprintf(linha,
"%s", texto[0]);
return
linha;
}
//printf("*j=
%i \t", *j);
for(i=1;(i<500)||(t2!=NULL);
i++)
{
t2=strtok('\0',
"\n");
sprintf(charater,
"%s", t2);
strcpy(texto[i],
charater);
*j=i;
// printf("*j=
%i \t", *j);
if(t2==NULL ||
strlen(charater)<3)
{
*j=i;
printf("
\n A linha pedida para a funcao e maior que a quanidade de linhas no
arquivo! \n Retornarei a ultima linha do arquivo\n ");
if(/*
*linha==NULL */strcmp(linha,NULL)==0)
{/* se
estiver passando somente um
* ponteiro
sem nada , NULL*/
linha=texto[i-1];
/*linha =
*//*strcpy(linha, texto[i-1]);*/
return
linha;
}
sprintf(linha,
"%s", texto[i-1]);
return linha;
}
if(i==I)
{
if(/*
*linha==NULL */strcmp(linha,NULL)==0)
{/* se
estiver passando somente um
* ponteiro
sem nada , NULL*/
linha=texto[i];
return
linha;
}
sprintf(linha,
"%s", texto[i]);
return linha;
}
}
return NULL;
}
/*===================================================================*/
char
***getLinhasSomenteleitura(char *arq, int *j, char ***texto4)
{
int i;
char texto[500][500],
text[10000], *t1, *t2, charater[500], **texto5;
t1=gettextoarq1Somenteleitura(arq,
t1);
printf("\n
entrou em char ***getLinhasSomenteleitura(char *arq, int *j, char
***texto4) \n gettextoarq1Somenteleitura(arq, t1); = %s \n ",
t1);
sprintf(text, "%s",
t1);
/* agora com a
string t1 tendo uma copia em "text"
* da pra ficar
mais aliviado, pois nao perderemos o
* conteudo do
arquivo, os nomes dos documentos*/
t2=strtok(text,
"\n");
sprintf(texto[0],
"%s", t2);
*j=i;
//printf("*j=
%i \t", *j);
for(i=1;(i<500)||(t2!=NULL);
i++)
{
t2=strtok('\0',
"\n");
sprintf(charater,
"%s", t2);
strcpy(texto[i],
charater);
*j=i;
// printf("*j=
%i \t", *j);
if(t2==NULL ||
strlen(charater)<3)
{
*j=i;
/*
*texto4=&texto[0][0];
*texto4= =
strdup(texto[0]);*/
// strcpy(texto5,
texto);
*texto4=texto5;
return texto4;
}
}
/*
*texto4=&texto[0][0];
*texto4= =
strdup(texto[0]);*/
// strcpy(texto5,
texto);
*texto4=texto5;
// return
&texto5;
return texto4;
}
/*===================================================================*/
char
*gettextoarq1Somenteleitura1( char *arq)
{
int fd, buf_size;
char buf[500],
buf2[10000], *buf3;
buf_size=499;
fd=open1(arq,
LEITURA);
buf3=gettextoarq(fd,
buf, buf_size,buf2);
close(fd);
return buf3;
}
/*===================================================================*/
/*===================================================================*/
/*===================================================================*/
/*===================================================================*/
/*===================================================================*/
char *strpdftk(char
*arq)
{
int i, j, k, l, m, n,
n1;
char *arq1, *arq2,
*arqout, *out, *ext, *meio;
l=getNumeroLinhaStringArquivo(arq);
n1=strlen("pdftk
");
n1=n1+800;
out=(char*)malloc(n1*sizeof(char));
arq1=(char*)malloc((n1-120)*sizeof(char));
arq2=(char*)malloc((n1-120)*sizeof(char));
ext=(char*)malloc((n1-500)*sizeof(char));
k=0;
i=0;
m=1;
//printf("\n
String0: %s\n", out);
//limpaStr(out);
//printf("\n
String1depois: %s\n", out);
/*printf("\n\n\n\n
getLinhaISomenteleitura1(arq, 2) : %s \n\n\n",
getLinhaISomenteleitura1(arq, 2));*/
/*
printf("\n\n\n\n
arquivos0 e arquivo1 arquivo2 respectivamente %s %s %s \n\n\n",
getLinhaISomenteleitura1(arq, 0), getLinhaISomenteleitura1(arq, 1),
getLinhaISomenteleitura1(arq, 2));*/
arq1=getLinhaISomenteleitura1(arq,
0);
arq2=getLinhaISomenteleitura1(arq,
1);
sprintf(ext, "
pdftk %s %s cat output PDFTK921_%i.pdf ;", arq1, arq2, 0);
//printf("\n %s
\n", ext);
strcat(out, ext);
k++;
sprintf(ext, "
pdftk PDFTK921_%i.pdf %s cat output PDFTK921_%i.pdf ;", k-1,
getLinhaISomenteleitura1(arq, 2), k);
strcat(out, ext);
//printf("\n
%s\n\n ", ext);
k++;
sprintf(ext, "
pdftk PDFTK921_%i.pdf %s cat output PDFTK921_%i.pdf ;", k-1,
getLinhaISomenteleitura1(arq, 3), k);
strcat(out, ext);
//printf("\n
%s\n\n ", ext);
k++;
for(i=4; i<l; i++)
{
sprintf(ext, "
pdftk PDFTK921_%i.pdf %s cat output PDFTK921_%i.pdf ;", k-1,
getLinhaISomenteleitura1(arq, i), k);
strcat(out, ext);
//printf("\n
\n %s\n\n ", ext);
k++;
}
//printf("\n out
= %s\n", out);
--k;
for(--k;k>=0;k--)
{
sprintf(ext, "
rm pdftk PDFTK921_%i.pdf ; ", k);
strcat(out, ext);
// printf("\n
\n %s\n\n ", ext);
}
strcat(out, " ls
-la ");
//printf("\n out
= %s\n", out);
return out;
}
/*===================================================================*/
/*===================================================================*/
/*===================================================================*/
/*===================================================================*/
/*===================================================================*/
/*===================================================================*/
/*===================================================================*/
/*===================================================================*/
char
*gettextoarq1Somenteleitura( char *arq, char *texto)
{
int fd, buf_size;
char buf[500],
buf2[10000], *buf3;
buf_size=499;
fd=open1(arq,
LEITURA);
printf("\n
Agora entrarei na funcao buf3=gettextoarq(fd, buf,
buf_size,buf2);\n");
buf3=gettextoarq(fd,
buf, buf_size,buf2);
printf("\n
Antes de entrar no If do texto \nO conteudo do arquivo %s e :\n %s
\n", arq, buf3);
if(/*
*texto==NULL */strcmp(texto,NULL)==0)
{/* se estiver
passando somente um
* ponteiro
sem nada , NULL*/
texto=buf3;
}
sprintf(texto,
"%s", buf3);
//printf("\n
Agora entrarei na funcao close(fd);\n");
close(fd);
//printf("\n O
conteudo do arquivo %s e :\n %s \n", arq, buf3);
return buf3;
}
/*===================================================================*/
char *gettextoarq(int
fd, char *buf, int buf_size, char *texto)
{
for(;;)
{
if(read(fd, buf,
buf_size)==0)
{
sprintf(texto, "
%s \n", buf);
return texto;
}
sprintf(texto, "
%s \n", buf);
}
}
/*===================================================================*/
int open1(char *file,
int oflag )
{
int fd;
if((fd=open(file,
oflag))==-1)
{
printf("\n Nao
e possivel abrir o arquivo %s \n", file);
return fd;
}
return fd;
}
/*===================================================================*/
char
substituiEspacoPor_(char *str)
{
return subs_str(str,
" ", "_");
}
/*===================================================================*/
char *subs_str(char
*string, char *substring, char *nova)
{
char *extrai;
int
tamanho1,tamanho2,contador, a4;
tamanho1 =
strlen(substring);
tamanho2 =
strlen(nova);
a4=strlen(string);
if((tamanho1 >
tamanho2) || (tamanho2 > tamanho1))
return(" ");
else
{
extrai =
strstr(string,substring);
if(extrai)
{
for(contador = 0;contador < a4; contador++)
string[(extrai - string) + contador] = nova[contador];
return(string);
}
else
return("
");
}
}
/*===================================================================*/
void prog()
{
char cmd[400],
arq[200], texto[600], **t1, ***t6, *t7, *t10, *t8, tr[200];
int i;
strcpy(tr,"O
joao e bacana pra caramba");
t7=NULL,t8=NULL;
sprintf(arq, "%s",
"arqpdf.txt");
//sprintf(stdout
,"%s", "imprimindo na tela, stdout com sprintf");
/*
printf("************************************");
printf("\n\n a
string %s sem espacos e : %s \n\n", tr,
substituiEspacoPor_(tr));*/
printf("************************************");
printf("\n
Programa que concatenara todos os arquivos .pdf em um \n\n\n ");
printf(" Para
esse programa funcionar direito e Necessario que: \n ");
mostraRespricoes();
sprintf(cmd, "for
x in *.pdf; do echo %s ", "\"$x\"; done >
arqpdf.txt");
system(cmd);
printf(" \n
cmd:\n %s \n ", cmd);
t10=strpdftk(arq);
printf(" \n
cmd:\n %s \n ", t10);
system(t10);
printf("
\n\n");
}
/*===================================================================*/
int main()
{
prog();
return ;
}
/*===================================================================*/
/*
*
* ordem das chamadas
de funções que estão me
dando dor de cabeça:
*
* prog();
==>>getLinhaISomenteleitura(arq, &i, t7, 3); ==>>
gettextoarq1Somenteleitura1(arq); ==>> ==>> ==>>
==>> ==>> ==>> ==>> ==>> ==>>
==>>
*
* -> prog();
==>>mostraLinhas(arq, 10); ==>>getLinhaISomenteleitura1(arq,
3); ==>> t1=gettextoarq1Somenteleitura1(arq); ==>> ==>>
==>> ==>> ==>> ==>> ==>> ==>>
==>> ==>>
-> prog();
==>>mostraRespricoes() ==>>[mostraLinhas4(arq);==>>
(vet1=get_vetor_string_arq(arq);==>>)==>>nl=getNumeroLinhaStringArquivo(arq);==>>]==>>
==>> ==>> ==>> ==>> ==>> ==>>
==>> ==>> ==>>
* */
quarta-feira, 3 de setembro de 2008
Link q mostra como instalar a interface gráfica no debian GNU/Linux 40.0 Etch cd oficial i 386 Biário-1
Se desejar ver a documentação do Debian em Português acesse:
http://wiki.forumdebian.com.br/index.php/P%C3%A1gina_principalhttp://wiki.forumdebian.com.br/index.php/P%C3%A1gina_principal
sexta-feira, 29 de agosto de 2008
Usando o pdftk, como converter 2 .pdf em 1
É que esqueci como coverter 2 .pdf para 1
O download desta ferramenta está disponível em .tar.gz e .tar.bz2 no link:
* http://www.accesspdf.com
Concluído o download, deve-se fazer a descompactação do mesmo:
$ tar -zxvf pdftk-1.12.tar.gz
ou
$ tar -jxvf pdftk-1.12.tar.bz2
Agora entre no diretório criado e em seguida no sub-diretório pdftk:
$ cd pdftk-1.12/pdftk
Dependendo de sua distribuição, execute o comando make 'arquivo', onde 'arquivo' corresponde à sua distribuição. Exemplos:
* Debian: make Makefile.Debian
* Mandrake: make Makefile.Mandrake
* RedHat: make Makefile.RedHat
* Outros: make Makefile.Generic
Terminado o processo de instalação, o arquivo "pdftk-1.12/pdftk/pdftk" já estará criado e poderá ser utilizado.
Dicas de utilização
Concatenando dois arquivos em um:
$ pdftk Arquivo1.pdf Arquivo2.pdf cat output Concatenado1e2.pdf
Dividindo arquivos:
$ pdftk Arquivo.pdf burst
* Desta forma cada página do arquivo será separada em um arquivo independente e nomeados como pg_0001.pdf, pg_0002.pdf e assim por diante.
Selecionando páginas a serem separadas:
$ pdftk Arquivo.pdf cat 1-5 10-12 output PaginasSelecionadas.pdf
* O arquivo PaginasSelecionadas.pdf será criado com as páginas de 1 a 5 e de 10 a 12 do arquivo Arquivo.pdf.
Pode-se remover uma determinada página repetindo o comando anterior alterando apenas os parâmetros. Por exemplo, remover a página 5 de um arquivo:
$ pdftk Arquivo.pdf cat 1-4 6-end output NovoArquivo.pdf
Você pode também criar um relatório com os metadados e "jogá-los" em um .txt:
$ pdftk Arquivo.pdf dump_data output relatorio.txt
Maiores informações podem ser obtidas no manual no pdftk em pdftk-1.12/pdftk.1.txt.
Fontes:
* http://applications.linux.com/applications/06/04/17/1943230.shtml?tid=47
* http://www.accesspdf.com/article.php/20041129180128366
E manual do pdftk:
$ less ./pdftk-1.12/pdftk.1.txt
terça-feira, 15 de julho de 2008
Usando funções para substituir o comando for da linguagem C
[code]
//################################################
//Bibliotecas incluídas no programa
//################################################
#include
#include
//################################################
//======================================================
//Funções utilizadas no programa
//======================================================
//------------------------------------------------------
int fib10it(int fib1)
{
int atual, prox, ant, i;
atual=1; prox=1; ant=0; i=0;
if(fib1 < 0){
printf("\n |> !!! Erro !!! Fibonacci nao aceita numeros negativos \n");
return 0;}
if(fib1==0)return 1;
if(fib1==1)return 1;
for(i=0; i < fib1; i++)
{
atual = ant + prox; ant=prox;
prox = atual;
}
return atual;//retorna o valor de fibonacci de forma iterativa
}
//------------------------------------------------------
//------------------------------------------------------
int fib10(int fib1)
{
if(fib1 < 0){
printf("\n |> !!! Erro !!! Fibonacci nao aceita numeros negativos \n");
return 0;}
if(fib1==0)return 1;
if(fib1==1)return 1;
//printf("\n\n Esta passando na funcao recursiva fib10()! \n\n");
return fib10(fib1 -1 )+ fib10(fib1 - 2);
}
//------------------------------------------------------
void fc2(int va)
{
printf(" \t %i", fib10it(va));
}
//------------------------------------------------------
//------------------------------------------------------
void fc1(int va)
{
printf(" \t %i", fib10(va));
}
//------------------------------------------------------
int forrec7( int j, void (*func1)())/* equivaçemte ao for(i=0; i < = j; i++), onde func1 é o endereço da função que você deseja que esteje dentro do for
seria semelhante a:
for(i=0; i < = j; i++)
func1();
*/
{
return forrec(0, j, func1);
}
//------------------------------------------------------
int forrec6( int j, void (*func1)())/* equivaçemte ao for(i=0; i < j; i++), onde func1 é o endereço da função que você deseja que esteje dentro do for
seria semelhante a:
for(i=0; i < j; i++)
func1();
*/
{
return forrec1(0, j, func1);
}
//------------------------------------------------------
int forrec5(int i, void (*func1)())/* equivaçemte ao for(; i > 0; i--), onde func1 é o endereço da função que você deseja que esteje dentro do for
seria semelhante a:
for(; i > 0; i--)
func1();
*/
{
if(i < = 0)
return 0;
(*func1)();
/*printf("\n i=%i, j=%i", i, j);*/
i--;
return forrec5(i, func1);
}
//------------------------------------------------------
int forrec4(int i, void (*func1)())/* equivaçemte ao for(; i > = 0; i--), onde func1 é o endereço da função que você deseja que esteje dentro do for
seria semelhante a:
for(; i > = 0; i--)
func1();
*/
{
if(i < 0)
return 0;
(*func1)();
/*printf("\n i=%i, j=%i", i, j);*/
i--;
return forrec4(i, func1);
}
//------------------------------------------------------
int forrec3(int i, int j, void (*func1)())/* equivaçemte ao for(i=j; i > = 0; i--), onde func1 é o endereço da função que você deseja que esteje dentro do for
seria semelhante a:
for(i=j; i > = 0; i--)
func1();
*/
{
if(i < 0)
return 0;
return forrec4(j, func1);
}
//------------------------------------------------------
int forrec2(int i, int j, void (*func1)())/* equivaçemte ao for(i=j; i > 0; i--), onde func1 é o endereço da função que você deseja que esteje dentro do for
seria semelhante a:
for(i=j; i > 0; i--)
func1();
*/
{
if(i < = 0)
return 0;
(*func1)();
/*printf("\n i=%i, j=%i", i, j);*/
i--;
return forrec2(i, j, func1);
}
//------------------------------------------------------
int forrec1(int i, int j, void (*func1)())/* equivaçemte ao for(i=0; i < j; i++), onde func1 é o endereço da função que você deseja que esteje dentro do for
seria semelhante a:
for(i=0; i < j; i++)
func1();
*/
{
if(i > = j)
return 0;
(*func1)();
/*printf("\n i=%i, j=%i", i, j);*/
i++;
return forrec1(i, j, func1);
}
//------------------------------------------------------
//------------------------------------------------------
int forrec(int i, int j, void (*func1)())/* equivaçemte ao for(; i<=j; i++), onde func1 é o endereço da função que você deseja que esteje dentro do for
seria semelhante a:
for(; i < = j; i++)
func1();
*/
{
/* em haskell (não testei ainda) :
forrec i j = forrec (i=i+1) j
forrec i j
| i > j =0
*/
if(i>j)
return 0;
(*func1)(i);
/*printf("\n i=%i, j=%i", i, j);*/
i++;
return forrec(i, j, func1);
}
//------------------------------------------------------
void for_iterativo(int i, int j, void (*func1)())
{
for( ; i < = j ; i++)
(*func1)(i);
}
//------------------------------------------------------
void for_iterativo1( int j, void (*func1)())/* for( i=0 ; i <= j ; i++)*/
{
int i;
i=0;
for( ; i < = j ; i++)
(*func1)(i);
}
//------------------------------------------------------
//------------------------------------------------------
void fib20()
{
int op, seq;
op=0, seq=0;
printf("\n | > \t Deseja que o for usado seja o recursivo ou o iterativo ? \n | > \t Para recursivo tecle 1 \n | > \t Para iterativo tecle 2: \n | > ");
scanf("%i", &op);
printf("\n | > \t Entre com o termo que deseja gerar a sequencia: \n | >");
scanf("%i", &seq);
printf("\n | > \t A sequencia de fibonacci e: \n | > \t ");
(op==1)?forrec7( seq , &fc1):for_iterativo1( seq, &fc2);
}
//------------------------------------------------------
//------------------------------------------------------
int fib2(int fib1)
{
int op;
op=0;
printf("\n | > \t Deseja que o for usado seja o recursivo ou o iterativo ? \n | > \t Para recursivo tecle 1 \n | > \t Para iterativo tecle 2: \n | > ");
scanf("%i", &op);
(op==1)?forrec7( fib1 , &fc1):for_iterativo1( fib1, &fc2);
printf("\n | > \t A sequencia de fibonacci e: \n | >");
return 0;
}
//------------------------------------------------------
void cle()
{
//?????????????????
// Declarações de variáveis principais
int seq;
//?????????????????
/* !!!!!!!!!!!!!!! */
//inicalização das variáveis
seq=0;
/* !!!!!!!!!!!!!!! */
printf("\n\n\n | > Programa que retorna a sequencia do numero de fibonacci \n ");
fib20();
printf("\n\n\n");
}
//------------------------------------------------------
//======================================================
int main(int argc, char **argv)
{
cle();
return 0;
}
[/code]
Esse código foi testado apenas na linguagem C!
Esse código da função que realiza a tarefa do comando for é interessante, pois utilizando-se de funções recursivas evita-se entrar em loops infinitos, já que um loop na pilha da recursão no máximo estouraria a pilha..! O uso de funções recursivas exige mais tempo de processamento e memória, mas é menos sujeito a erros, vale a pena o programador se perguntar: "O que desejo ? Eficiência ou garantia que meu código está coeso e não dará pau ?"
domingo, 6 de julho de 2008
__| O cara da informatica |__
"Nem tudo que publicamos aqui e' serio, na verdade adoramos rir de nos mesmos e, sempre publicamos textos engracados que falam desta nossa vida tecnologica. O Fernando Anselmo, fernando.anselmo@dfjug.org, coordenador e moderador da lista de discussao do DFJUG, distribuiu o texto abaixo entre os amigos (e a carapuca serviu para todos :-))
Para os verdadeiros CARAS DA INFORMaTICA
1) O CARA DA INFORMaTICA dorme. Pode parecer mentira, mas o CARA DA INFORMaTICA precisa dormir como qualquer outra pessoa. Esqueca que ele tem celular e telefone em casa, ligue so para o escritorio;
2) O CARA DA INFORMaTICA come. Parece inacreditavel, mas e verdade. O CARA DA INFORMaTICA tambem precisa se alimentar e tem hora para isso;
3) O CARA DA INFORMaTICA pode ter familia. Essa e a mais incrivel de todas: Mesmo sendo um CARA DA INFORMaTICA, a pessoa precisa descansar no final de semana para poder dar atencao a familia, aos amigos e a si proprio, sem pensar ou falar em informatica, impostos, formularios, consertos e demonstracoes, manutencao, virus e etc.;
4) O CARA DA INFORMaTICA, como qualquer cidadao, precisa de dinheiro. Por essa voce nao esperava, ne? e surpreendente, mas o CARA DA INFORMaTICA tambem
paga impostos, compra comida, precisa de combustivel, roupas e sapatos e ainda consome Lexotan para conseguir relaxar. Nao peca aquilo pelo que nao pode pagar ao CARA DA INFORMaTICA;
5) Ler, estudar tambem e trabalho. E trabalho serio. Pode parar de rir. Nao e piada. Quando um CARA DA INFORMaTICA esta concentrado num livro ou publicacao especializada ele esta se aprimorando como profissional, logo trabalhando;
6) De uma vez por todas, vale reforcar: O CARA DA INFORMaTICA nao e vidente, nao joga taro e nem tem bola de cristal, pois se achou isto demita-o e contrate um PARANORMAL OU DETETIVE. Ele precisa planejar, se organizar e assim ter condicoes de fazer um bom trabalho, seja de que tamanho for. Prazos sao essenciais e nao um luxo. Se voce quer um milagre, ore bastante, faca jejum, e deixe o pobre do CARA DA INFORMaTICA em paz;
7) Em reunioes de amigos ou festas de familia, o CARA DA INFORMaTICA deixa de ser o CARA DA INFORMaTICA e reassume seu posto de amigo ou parente, exatamente como era antes dele ingressar nesta profissao. Nao peca conselhos, dicas. ele tem direito de se divertir;
8) Nao existe apenas um 'levantamentozinho' , uma 'pesquisazinha' , nem um 'resuminho', um 'programinha pra controlar minha loja', um 'probleminha que a maquina nao liga', um 'sisteminha' , uma 'passadinha rapida (ALIAS CONTA-SE DE ONDE SAIMOS E ATe CHEGARMOS)', pois esqueca os 'inha e os inho (programinha, sisteminha, olhadinha, )' pois, CARAS DA INFORMATICA nao resolvem este tipo de problema. Levantamentos, pesquisas e resumos sao frutos de analises cuidadosas e requerem atencao, dedicacao. Esses topicos podem parecer inconcebiveis a uma boa parte da populacao, mas servem para tornar a vida do CARA DA INFORMATICA mais suportavel;
9) Quanto ao uso do celular: celular e ferramenta de trabalho. Por favor, ligue, apenas, quando necessario. Fora do horario de expediente, mesmo que ainda duvide, o CARA DA INFORMATICA pode estar fazendo algumas coisas que voce nem pensou que ele fazia, como dormir ou namorar, por exemplo;
10) Pedir a mesma coisa ao mesmo tempo nao faz o CARA DA INFORMATICA trabalhar mais rapido. Solicite, depois aguarde o prazo dado pelo CARA DA INFORMATICA;
11) Quando o horario de trabalho do periodo da manha vai ate 12h, nao significa que voce pode ligar as 11:58 horas. Se voce pretendia cometer essa gafe, ligue apos o horario do almoco (relembre o item 2). O mesmo vale para a parte da tarde: ligue no dia seguinte;
12) Quando o CARA DA INFORMATICA estiver apresentando um projeto, por favor, evite as perguntas que nao tenham relacao com o projeto. Isso tira a concentracao, alem de torrar a paciencia.
13) O CARA DA INFORMATICA nao inventa problemas, nao muda versao de WINDOWS, nao tem relacao com virus, NaO e CULPADO PELO MAL USO DE EQUIPAMENTOS, INTERNET E AFINS. Nao reclame! O CARA DA INFORMATICA com certeza fez o possivel para voce pagar menos. Se quer EMENDAR, EMENDE, mas antes demita o CARA DA INFORMATICA e contrate um CARA DE POG;
14) Os CARAS DA INFORMATICA nao sao os criadores dos ditados 'o barato sai caro' e 'quem paga mal paga em dobro'. Mas estao todos de acordo com eles;
15) Nao pergunte para O CARA DA INFORMATICA uma sugestao de computador BOM e BARATO para voce comprar. Nao existe computador BOM e BARATO. Ou e uma coisa, ou e outra;
16) E, finalmente, o CARA DA INFORMATICA tambem e filho de DEUS e nao filho disso que voce pensou.
Agora, depois de aprender sobre O CARA DA INFORMATICA, repasse aos seus amigos, afinal, essas verdades precisam chegar a todos. O CARA DA INFORMATICA agradece.
/** Certificacao JEDI http://www.dfjug.org/DFJUG/tvdfjug/videos/v_wildt.html **/"
terça-feira, 1 de julho de 2008
Matando processos com o auxílio da shell do linux, do kill e do ps
Para matar um processo é necessário primeiro saber qual é o número do PID dele, para isso você digita na shell:
$ ps -A
Sabendo o PID basta dar o comando:
$ kill PID_do_Processo
Por exemplo eu vou matar o processo do java, para isso dei um ps -A que me gerou o resultado abaixo:
danilomatias@danilomatias-laptop:~$ ps -A
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 watchdog/0
6 ? 00:00:00 migration/1
7 ? 00:00:00 ksoftirqd/1
8 ? 00:00:00 watchdog/1
9 ? 00:00:00 events/0
10 ? 00:00:00 events/1
11 ? 00:00:00 khelper
46 ? 00:00:00 kblockd/0
47 ? 00:00:00 kblockd/1
50 ? 00:00:00 kacpid
51 ? 00:00:00 kacpi_notify
134 ? 00:00:00 kseriod
176 ? 00:00:00 pdflush
177 ? 00:00:00 pdflush
178 ? 00:00:00 kswapd0
219 ? 00:00:00 aio/0
220 ? 00:00:00 aio/1
1417 ? 00:00:00 ksuspend_usbd
1420 ? 00:00:00 khubd
1558 ? 00:00:00 ata/0
1565 ? 00:00:00 ata/1
1566 ? 00:00:00 ata_aux
2319 ? 00:00:00 scsi_eh_0
2320 ? 00:00:00 scsi_eh_1
2321 ? 00:00:00 scsi_eh_2
2361 ? 00:00:00 scsi_eh_3
2362 ? 00:00:00 usb-storage
2398 ? 00:00:00 scsi_eh_4
2399 ? 00:00:00 scsi_eh_5
2536 ? 00:00:00 kjournald
2741 ? 00:00:00 udevd
3049 ? 00:00:00 kpsmoused
4263 ? 00:00:00 kjournald
4534 tty4 00:00:00 getty
4535 tty5 00:00:00 getty
4537 tty2 00:00:00 getty
4540 tty3 00:00:00 getty
4541 tty6 00:00:00 getty
4727 ? 00:00:00 acpid
4761 ? 00:00:00 kondemand/0
4762 ? 00:00:00 kondemand/1
4847 ? 00:00:00 syslogd
4900 ? 00:00:00 dd
4902 ? 00:00:00 klogd
4924 ? 00:00:00 dbus-daemon
4940 ? 00:00:00 NetworkManager
4954 ? 00:00:00 NetworkManagerD
4967 ? 00:00:00 system-tools-ba
4987 ? 00:00:00 avahi-daemon
4988 ? 00:00:00 avahi-daemon
5030 ? 00:00:00 cupsd
5098 ? 00:00:00 dhcdbd
5117 ? 00:00:01 hald
5120 ? 00:00:00 console-kit-dae
5121 ? 00:00:00 hald-runner
5194 ? 00:00:00 hald-addon-inpu
5200 ? 00:00:00 hald-addon-cpuf
5201 ? 00:00:00 hald-addon-acpi
5225 ? 00:00:00 hald-addon-stor
5228 ? 00:00:00 hald-addon-stor
5254 ? 00:00:00 hcid
5274 ? 00:00:00 btaddconn
5275 ? 00:00:00 btdelconn
5285 ? 00:00:00 bluetoothd-serv
5286 ? 00:00:00 bluetoothd-serv
5291 ? 00:00:00 krfcommd
5330 ? 00:00:00 gdm
5333 ? 00:00:00 gdm
5337 tty7 00:05:46 Xorg
5375 ? 00:00:00 atd
5389 ? 00:00:00 cron
5486 ? 00:00:00 vmnet-bridge
5497 ? 00:00:00 dhclient
5504 ? 00:00:00 vmnet-netifup
5517 ? 00:00:00 vmnet-dhcpd
5532 ? 00:00:00 vmnet-netifup
5541 ? 00:00:00 vmnet-dhcpd
5546 ? 00:00:00 vmnet-natd
5624 tty1 00:00:00 getty
5719 ? 00:00:01 gconfd-2
5721 ? 00:00:00 gnome-keyring-d
5722 ? 00:00:00 x-session-manag
5809 ? 00:00:00 seahorse-agent
5813 ? 00:00:00 dbus-daemon
5814 ? 00:00:01 gnome-settings-
5822 ? 00:00:00 pulseaudio
5825 ? 00:00:00 gconf-helper
5834 ? 00:00:00 compiz
5840 ? 00:00:06 gnome-panel
5841 ? 00:00:02 gnome-screensav
5842 ? 00:00:01 nautilus
5849 ? 00:00:00 bonobo-activati
5876 ? 00:00:00 gvfsd
5893 ? 00:00:00 gvfs-fuse-daemo
5914 ? 00:00:15 compiz.real
5915 ? 00:00:00 bluetooth-apple
5918 ? 00:00:00 update-notifier
5922 ? 00:00:00 tracker-applet
5925 ? 00:00:00 evolution-alarm
5928 ? 00:00:00 trackerd
5931 ? 00:00:01 nm-applet
5932 ? 00:00:00 python
5933 ? 00:00:00 gnome-volume-ma
5935 ? 00:00:00 gnome-power-man
5986 ? 00:00:00 evolution-excha
5994 ? 00:00:00 trashapplet
5996 ? 00:00:00 evolution-data-
5999 ? 00:00:00 gvfsd-trash
6007 ? 00:00:00 gvfsd-burn
6024 ? 00:00:00 sh
6025 ? 00:00:00 compiz-decorato
6027 ? 00:00:04 gtk-window-deco
6036 ? 00:00:00 mixer_applet2
6039 ? 00:00:00 fast-user-switc
6052 ? 00:20:36 firefox
6428 ? 00:00:14 java
6489 ? 00:00:02 gnome-terminal
6491 ? 00:00:00 gnome-pty-helpe
6492 pts/0 00:00:00 bash
6509 pts/1 00:00:00 bash
6577 ? 00:00:00 sh
6578 ? 00:00:00 dcop
6580 pts/1 00:00:00 ps
Verifiquei que o PID do java é: 6428
Agora vou dar o comando para matar o processo 6428:
danilomatias@danilomatias-laptop:~$ kill 6428
Prontinho processo morto com êxito!
Assindo Vídeos no linux com o ffplay
Quando você instalou o ffmpeg instalou sem querer também o ffplay e o ffserver
O comando para ver um vídeo (qualquer formato de vídeo que o ffmpeg suporta, a lista se encontra na próxima postagem, um deles é o .flv) no ffplay é:
$ ffplay nome_do_video.extensao_do_video
Por exemplo se eu quero ver o vídeo 1.flv eu dou o comando:
$ ffplay 1.flv
As opções do ffplay se encontram abaixo:
danilomatias@danilomatias-laptop:~/Vídeos/ffmpeg$ ffplay
ffplay version SVN-rUNKNOWN, Copyright (c) 2003-2006 Fabrice Bellard, et al.
usage: ffplay [options] input_file
Simple media player
Main options:
-h show help
-x width force displayed width
-y height force displayed height
-s size set frame size (WxH or abbreviation)
-fs force full screen
-an disable audio
-vn disable video
-ss pos seek to a given position in seconds
-bytes seek by bytes
-nodisp disable graphical display
-f fmt force format
Advanced options:
-ast
-pix_fmt format set pixel format
-stats show status
-debug print specific debug info
-bug workaround bugs
-vismv visualize motion vectors
-fast non spec compliant optimizations
-genpts generate pts
-lowres
-skiploop
-skipframe
-skipidct
-idct algo set idct algo
-er threshold set error detection threshold (0-4)
-ec bit_mask set error concealment options
-rtp_tcp force RTP/TCP protocol usage
-sync type set audio-video sync. type (type=audio/video/ext)
-threads count thread count
While playing:
q, ESC quit
f toggle full screen
p, SPC pause
a cycle audio channel
v cycle video channel
t cycle subtitle channel
w show audio waves
left/right seek backward/forward 10 seconds
down/up seek backward/forward 1 minute
mouse click seek to percentage in file corresponding to fraction of width
Para exibir isso que está acima de o comando:
$ ffplay
Olhando essa ajuda ai acima observa-se que a forma geral do comando é:
ffplay [options] input_file
Ou seja: ffplay opções arquivoDeVideo
Um exemplo, para conseguir ver o vídeo pti.flv com algumas opções digitei:
$ ffplay pti.flv -skiploop -skipframe -stats -ss pos -fs -ast -debug -vismv -genpts
-lowres -threads count
Onde o Vídeo pti, rodará na tela inteira do monitor (-fs) e as demais opções estão ali a volta.
Espero ter ajudado!
Lembre-se o ffplay é o player que toca o maior número de formatos existentes (pelo menos dos que eu conheço)
Apenas por isso acho que essa dica é válida
Abração e se cuida!
