Minishell 1.0
42 School Minishell Project - A simple shell implementation
Yüklüyor...
Arıyor...
Eşleşme Yok
expander_env_replacement.c Dosya Referansı
#include "../../include/minishell.h"
#include <stdlib.h>
expander_env_replacement.c için içerme bağımlılık grafiği:

Bu dosyanın kaynak koduna git.

Fonksiyonlar

t_envextract_variable_info (t_shell *shell, char *str)
 Değişken ismini ve değerini bulup bir t_env paketi içinde döndürür.
int check_var_extraction (t_env *var, int *i)
 Çıkarılan değişken paketinin durumunu kontrol eder.
int apply_variable_replacement (t_token *token, t_env *var, int *i)
 Değişken değişimini token üzerinde uygular ve indeksi günceller.
int process_variable_replacement (t_shell *shell, t_token *token, int *i)
 Tek bir genişletme işleminin tüm sürecini yöneten orkestra şefi.

Fonksiyon Dokümantasyonu

◆ extract_variable_info()

t_env * extract_variable_info ( t_shell * shell,
char * str )

Değişken ismini ve değerini bulup bir t_env paketi içinde döndürür.

'$' işaretinden sonra gelen stringi analiz eder. Geçerli değişken ismini (key) çıkarır ve shell'in env listesinden değerini (value) bulur. Bu verileri geçici bir t_env yapısında saklar.

Parametreler
shellAna yapı (env listesine erişim için).
strDolar işaretinden hemen sonra başlayan string.
Döndürdüğü değer
t_env* Doldurulmuş paket veya malloc hatasında NULL.

expander_env_replacement.c dosyasının 27 numaralı satırında tanımlanmıştır.

Referanslar free_env_node(), get_var_name_len(), get_var_value(), s_env::key ve s_env::value.

Referans veren process_variable_replacement().

Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ check_var_extraction()

int check_var_extraction ( t_env * var,
int * i )

Çıkarılan değişken paketinin durumunu kontrol eder.

Bu fonksiyon bir "Kapı Bekçisi" (Gatekeeper) gibidir. Ana fonksiyona ne yapması gerektiğini söyleyen bir durum kodu döndürür.

Parametreler
varextract_variable_info'dan dönen paket.
iAna döngüdeki indeksin adresi (güncellemek için).
Döndürdüğü değer
int 0: Hata (Malloc başarısız, var NULL). 1: Atla (Geçersiz değişken ismi, $ literal olarak kalmalı). -1: Devam et (Geçerli değişken, işleme devam).

expander_env_replacement.c dosyasının 71 numaralı satırında tanımlanmıştır.

Referanslar free_env_node() ve s_env::key.

Referans veren process_variable_replacement().

Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ apply_variable_replacement()

int apply_variable_replacement ( t_token * token,
t_env * var,
int * i )

Değişken değişimini token üzerinde uygular ve indeksi günceller.

replace_token_value fonksiyonunu çağırarak string manipülasyonunu yapar. Ardından ana döngünün sonsuz döngüye girmemesi veya yeni eklenen değerin tekrar genişletilmemesi için indeksi (*i) ayarlar.

Parametreler
tokenÜzerinde işlem yapılan token.
varDeğişken bilgilerini tutan paket.
iAna döngüdeki indeksin adresi.
Döndürdüğü değer
int Başarılıysa 1, malloc hatasında 0.

expander_env_replacement.c dosyasının 100 numaralı satırında tanımlanmıştır.

Referanslar s_env::key, replace_token_value() ve s_env::value.

Referans veren process_variable_replacement().

Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ process_variable_replacement()

int process_variable_replacement ( t_shell * shell,
t_token * token,
int * i )

Tek bir genişletme işleminin tüm sürecini yöneten orkestra şefi.

  1. Extract: Bilgiyi çek.
  2. Check: Durumu kontrol et.
  3. Apply: Değişikliği uygula.
  4. Cleanup: Geçici belleği temizle.
Parametreler
shellAna yapı.
tokenİşlenen token.
iAna döngüdeki indeksin adresi.
Döndürdüğü değer
int Başarılıysa 1, hata varsa 0.

expander_env_replacement.c dosyasının 130 numaralı satırında tanımlanmıştır.

Referanslar apply_variable_replacement(), check_var_extraction(), extract_variable_info(), free_env_node() ve s_token::value.

Referans veren expand_variable().

Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması: