mirror of
https://gitlab.com/klmp200/fish.git
synced 2024-11-22 00:33:20 +00:00
Merge branch 'bro' into 'master'
regex motor rouling 40km/h See merge request !1
This commit is contained in:
commit
90c55349e1
@ -4,5 +4,6 @@ project(fish)
|
|||||||
set(CMAKE_C_STANDARD 99)
|
set(CMAKE_C_STANDARD 99)
|
||||||
set(CMAKE_C_FLAGS "-Wall -Werror -pedantic -fpic -Wextra")
|
set(CMAKE_C_FLAGS "-Wall -Werror -pedantic -fpic -Wextra")
|
||||||
|
|
||||||
set(SOURCE_FILES main.c fish_shell/fish_core.c fish_shell/fish_core.h fish_shell/fish_commands.c fish_shell/fish_commands.h fish_shell/fish_types.h fish_shell/fish_utils.c fish_shell/fish_utils.h)
|
set(SOURCE_FILES main.c fish_shell/fish_core.c fish_shell/fish_core.h fish_shell/fish_commands.c fish_shell/fish_commands.h fish_shell/fish_types.h fish_shell/fish_utils.c fish_shell/fish_utils.h fish_shell/fish_globbing.c fish_shell/fish_globbing.h)
|
||||||
add_executable(fish ${SOURCE_FILES})
|
add_executable(fish ${SOURCE_FILES})
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
//
|
//
|
||||||
// Created by Antoine Bartuccio on 11/05/2017.
|
// Created by Antoine Bartuccio on 11/05/2017.
|
||||||
|
// Dont forget that Antoine Bartuccio is a faggot since 1784 (tm)
|
||||||
//
|
//
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -7,6 +8,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include "fish_core.h"
|
#include "fish_core.h"
|
||||||
|
#include "fish_globbing.h"
|
||||||
|
|
||||||
#define FISH_BUFFER_SIZE 1024
|
#define FISH_BUFFER_SIZE 1024
|
||||||
#define FISH_TOKENS " \t\r\n\a"
|
#define FISH_TOKENS " \t\r\n\a"
|
||||||
@ -16,12 +18,12 @@ void fishLoop(Settings * settings){
|
|||||||
WordArray * splited = NULL;
|
WordArray * splited = NULL;
|
||||||
int status = 1;
|
int status = 1;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
printf("%s", settings->PS1);
|
printf("%s", settings->PS1);
|
||||||
line = fishReadLine();
|
line = fishReadLine();
|
||||||
line = fishExpand(line);
|
|
||||||
|
|
||||||
splited = split(line, FISH_TOKENS);
|
splited = split(line, FISH_TOKENS);
|
||||||
|
splited = fishExpand(splited);
|
||||||
|
|
||||||
status = fishExecute(splited);
|
status = fishExecute(splited);
|
||||||
|
|
||||||
@ -103,10 +105,6 @@ char *fishReadLine() {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *fishExpand(char *line) {
|
|
||||||
return line;
|
|
||||||
}
|
|
||||||
|
|
||||||
Settings *getSettings() {
|
Settings *getSettings() {
|
||||||
Settings *s = (Settings*) malloc(sizeof(Settings));
|
Settings *s = (Settings*) malloc(sizeof(Settings));
|
||||||
if (s == NULL){
|
if (s == NULL){
|
||||||
|
@ -28,7 +28,6 @@ char * fishReadLine();
|
|||||||
|
|
||||||
int countSeparators(char *string, char *separators);
|
int countSeparators(char *string, char *separators);
|
||||||
|
|
||||||
char * fishExpand(char* line);
|
|
||||||
|
|
||||||
int fishLoad(WordArray *array);
|
int fishLoad(WordArray *array);
|
||||||
|
|
||||||
|
123
fish_shell/fish_globbing.c
Normal file
123
fish_shell/fish_globbing.c
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
// Created by Aethor
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include "fish_core.h"
|
||||||
|
#include "fish_globbing.h"
|
||||||
|
|
||||||
|
WordArray* fishExpand(WordArray *wordArray) {
|
||||||
|
|
||||||
|
int i;
|
||||||
|
//WordArray* splitParameter;
|
||||||
|
|
||||||
|
for(i=1; i<wordArray->size; i++){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return wordArray;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
WordArray * getFiles(char* path){
|
||||||
|
|
||||||
|
DIR* directory;
|
||||||
|
dirent* dir;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
WordArray* files = (WordArray*) malloc(sizeof(WordArray));
|
||||||
|
|
||||||
|
|
||||||
|
if((directory = opendir(path)) != NULL){
|
||||||
|
|
||||||
|
while((dir = readdir(directory)) != NULL){
|
||||||
|
|
||||||
|
i++;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
files->words = (char **) malloc(sizeof(char*) * (i + 1));
|
||||||
|
|
||||||
|
closedir(directory);
|
||||||
|
directory = opendir(path);
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
while((dir = readdir(directory)) != NULL){
|
||||||
|
|
||||||
|
files->words[i] = dir->d_name;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return files;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int comparator(char* string1, char* string2){//TODO
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
char tempIChar;
|
||||||
|
int j = 0;
|
||||||
|
|
||||||
|
if(string1 != NULL && string2 != NULL){
|
||||||
|
|
||||||
|
while(string1[i] != '\0' && string2[j] != '\0'){
|
||||||
|
|
||||||
|
if(string1[i] == '*'){
|
||||||
|
|
||||||
|
tempIChar = string1[i+1];
|
||||||
|
|
||||||
|
while(string2[j] != tempIChar){
|
||||||
|
|
||||||
|
j++;
|
||||||
|
|
||||||
|
if(string2[j] == '\0' && tempIChar == '\0'){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(string1[i] != string2[j] && string1[i] != '?'){
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
j++;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(string1[i] == '\0' && string2[j] == '\0'){
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else{
|
||||||
|
|
||||||
|
printf("warning : fuck you, strings are considered null");
|
||||||
|
crash();
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
14
fish_shell/fish_globbing.h
Normal file
14
fish_shell/fish_globbing.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#ifndef FISH_FISH_GLOBBING_H
|
||||||
|
#define FISH_FISH_GLOBBING_H
|
||||||
|
|
||||||
|
typedef struct dirent dirent;
|
||||||
|
|
||||||
|
|
||||||
|
WordArray * fishExpand(WordArray* wordArray);
|
||||||
|
|
||||||
|
WordArray* getFiles(char* path);
|
||||||
|
|
||||||
|
/*char1 is a string with characters such as '*', '.' or '?' having special meanings*/
|
||||||
|
int comparator(char* string1, char* string2);
|
||||||
|
|
||||||
|
#endif //FISH_FISH_GLOBBING_H
|
Loading…
Reference in New Issue
Block a user