tag editar easytag linux tail uclinux

editar - ¿Cómo puedo obtener el código fuente para la cola de la utilidad linux?



linux easytag (4)

Este comando es realmente muy útil, pero puedo obtener el código fuente para ver qué ocurre dentro.

Gracias .



Poke alrededor del sitio uclinux. Dado que distribuyeron el software, deben hacer que la fuente esté disponible de una manera u otra.

O bien, podría leer man fseek y adivinar cómo podría hacerse.

NB: vea los comentarios de William a continuación, hay casos en los que no puede usar buscar


Puede que te resulte un ejercicio interesante escribir el tuyo. La gran mayoría de las herramientas de línea de comandos de Unix son aproximadamente una página de código C bastante sencillo.

Para ver el código, las fuentes de GNU CoreUtils se encuentran fácilmente en gnu.org o en su sitio favorito de réplica de Linux.


/`*This example implements the option n of tail command.*/` #define _FILE_OFFSET_BITS 64 #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <errno.h> #include <unistd.h> #include <getopt.h> #define BUFF_SIZE 4096 FILE *openFile(const char *filePath) { FILE *file; file= fopen(filePath, "r"); if(file == NULL) { fprintf(stderr,"Error opening file: %s/n",filePath); exit(errno); } return(file); } void printLine(FILE *file, off_t startline) { int fd; fd= fileno(file); int nread; char buffer[BUFF_SIZE]; lseek(fd,(startline + 1),SEEK_SET); while((nread= read(fd,buffer,BUFF_SIZE)) > 0) { write(STDOUT_FILENO, buffer, nread); } } void walkFile(FILE *file, long nlines) { off_t fposition; fseek(file,0,SEEK_END); fposition= ftell(file); off_t index= fposition; off_t end= fposition; long countlines= 0; char cbyte; for(index; index >= 0; index --) { cbyte= fgetc(file); if (cbyte == ''/n'' && (end - index) > 1) { countlines ++; if(countlines == nlines) { break; } } fposition--; fseek(file,fposition,SEEK_SET); } printLine(file, fposition); fclose(file); } int main(int argc, char *argv[]) { FILE *file; file= openFile(argv[2]); walkFile(file, atol(argv[1])); return 0; } /*Note: take in mind that i not wrote code to parse input options and arguments, neither code to check if the lines number argument is really a number.*/