Minishell 1.0
42 School Minishell Project - A simple shell implementation
Yüklüyor...
Arıyor...
Eşleşme Yok
env_parser.c
Bu dosyanın dokümantasyonuna git.
1/* ************************************************************************** */
2/* */
3/* ::: :::::::: */
4/* env_parser.c :+: :+: :+: */
5/* +:+ +:+ +:+ */
6/* By: bkinali <bkinali@student.42.fr> #+# +:+ +#+ */
7/* +#+#+#+#+#+ +#+ */
8/* Created: 2025-11-20 11:36:10 by bkinali #+# #+# */
9/* Updated: 2025-11-20 11:36:10 by bkinali ### ########.tr */
10/* */
11/* ************************************************************************** */
12
13/**
14 * @file env_parser.c
15 * @brief Ortam değişkenleri ayrıştırma (parsing) işlemleri
16 */
17
19#include <stdlib.h>
20
21/**
22 * @brief Tek bir ortam değişkeni satırını ayrıştırıp listeye ekler
23 * @param shell Shell yapısı
24 * @param env_str "KEY=VALUE" formatında ortam değişkeni stringi
25 * @return int Başarı: 1, Hata: 0
26 */
27int parse_env_line(t_shell *shell, char *env_str)
28{
29 char *eq_ptr;
30 char *key;
31 char *value;
32 int result;
33
34 if (!env_str || !env_str[0])
35 return (0);
36 eq_ptr = ft_strchr(env_str, '=');
37 if (!eq_ptr)
38 {
39 key = env_str;
40 value = NULL;
41 }
42 else
43 {
44 key = ft_substr(env_str, 0, eq_ptr - env_str);
45 if (!key)
46 return (0);
47 value = eq_ptr + 1;
48 }
49 result = append_env_node(&shell->env_list, key, value);
50 if (eq_ptr)
51 free(key);
52 return (result);
53}
54
55/**
56 * @brief Tüm ortam değişkenlerini (envp) ayrıştırarak listeye ekler
57 * @param shell Shell yapısı
58 * @return int Başarı: 1, Hata: 0
59 */
61{
62 int i;
63
64 i = 0;
65 while (shell->envp[i])
66 {
67 if (!parse_env_line(shell, shell->envp[i]))
68 {
69 ft_lstclear(&shell->env_list, &free_env_node);
70 return (0);
71 }
72 i++;
73 }
74 return (1);
75}
int append_env_node(t_list **env_list, char *key, char *value)
Ortam değişkeni node'u listeye ekler.
void free_env_node(void *content)
Ortam değişkeni node'unu serbest bırakır.
int parse_env_line(t_shell *shell, char *env_str)
Tek bir ortam değişkeni satırını ayrıştırıp listeye ekler.
Definition env_parser.c:27
int parse_env_variables(t_shell *shell)
Tüm ortam değişkenlerini (envp) ayrıştırarak listeye ekler.
Definition env_parser.c:60
Minishell ana header dosyası
struct s_shell t_shell
char ** envp
Definition minishell.h:151
t_list * env_list
Definition minishell.h:149