-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcomandos.h
More file actions
129 lines (89 loc) · 4.54 KB
/
comandos.h
File metadata and controls
129 lines (89 loc) · 4.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// Pablo Portas López pablo.portas
// Pablo Míguez Muiño pablo.miguez.moino
#ifndef COMANDOS_H
#define COMANDOS_H
#include <stdbool.h>
#include <sys/types.h>
// COMANDOS BÁSICOS P0 + P1
#define MAX_FILES 100 // Máximos archivos posibles de abrir
// Struct para almacenar los archivos abiertos
typedef struct {
int desc;
char filename[PATH_MAX];
char mode[3];
} OpenFile;
// Struct para almacenar las equivalencias entre "comando" y función
struct CMD {
char *comando;
void (*funcion)(int, char **, int, char **, char **);
};
// Estructura de una función de comandos
// void comando(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// P0
// Imprime por pantalla los autores del proyecto. Acepta dos parámetros:
// [-l|-n] Solo logins y solo nombres respectivamente
void Cmd_authors(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Imprime por pantalla el pid del shell
void Cmd_pid(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Imprime por pantalla el ppid del shell
void Cmd_ppid(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Cambia el cwd del shell al path específicado [dir]
void Cmd_cd(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Imprime por pantalla la fecha actual. Acepta dos parámetros:
// [-t|-d] Solo hora y solo fecha respectivamente
void Cmd_date(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Lista los archivos abiertos o abre el archivo especificado
// dado un path y un modo. Los modos aceptados son:
// cr, ap, ex, ro, rw, wo, tr.
void Cmd_open(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Cierra el archivo especificado dado un file descriptor
void Cmd_close(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Duplica el file descriptor especificado
void Cmd_dup(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Imprime por pantalla la información del equipo
void Cmd_infosys(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Imprime por pantalla el historial de todos los inputs del usuario
// Acepta dos parámetros: [N|-N] Imprimir el comando N o imprimir los
// últimos N comandos
void Cmd_historic(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Termina con el shell y borra el historial
void Cmd_exit();
// P1
// Crea un archivo
void Cmd_makefile(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Crea un directorio
void Cmd_makedir(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Da la información de un archivo o un directorio
void Cmd_listfile(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Imprime el directorio de trabajo actual
void Cmd_cwd(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Imprime los contenidos de una carpeta
void Cmd_listdir(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Imprime los contenidos de un directorio de forma recursiva
// (subdirectorios después)
void Cmd_reclist(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Imprime los contenidos de un directorio de forma recursiva
// (subdirectorios antes)
void Cmd_revlist(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Elimina archivos o directorios vacios
void Cmd_erase(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// Elimina archivos y/o directorios no vacíos recursivamente
void Cmd_delrec(int NumTrozos, char *trozos[], int argc, char *argv[], char *env[]);
// FUNCIONES AUXILIARES
// Devuelve el valor numérico de las diferentes "flags" de apertura
int Aux_open_get_flag(const char *mode);
// Imprime por pantalla los archivos abiertos y sus descriptores
// De no haberlos imprime un aviso
void Aux_open_lofiles();
void Aux_reclist(char *dir_name, bool show_hidden, bool show_long, bool show_acc, bool show_link);
void Aux_revlist(char *dir_name, bool show_long, bool show_acc, bool show_link, bool show_hid, char *parent_dir);
// Devuelve la letra del tipo de archivo
char Aux_comando_LetraTF(mode_t m);
// Dado un mode_t devuelve un string con formato
// Ej: -rwxrwxrwx
char *Aux_comando_mode_to_string(mode_t m, char *permisos);
// Imprime la información de un archivo dados su nombre y ruta.
// Dependiendo de los valores booleanos long, acc y link
void Aux_comando_pfinfo(char *path, char *name, bool show_long, bool show_acc, bool show_link);
void Aux_delrec(char *dir_name);
#endif