Minishell 1.0
42 School Minishell Project - A simple shell implementation
Yüklüyor...
Arıyor...
Eşleşme Yok
expander.c Dosya Referansı
expander.c için içerme bağımlılık grafiği:

Bu dosyanın kaynak koduna git.

Fonksiyonlar

int expand_variable (t_shell *shell, t_token *token)
 Bir token'ın içeriğindeki değişkenleri ($VAR) tarar ve değiştirir.
int expander_dispatcher (t_shell *shell, t_token *current, t_token *prev)
 Token'ın genişletilip genişletilmeyeceğine karar veren dağıtıcı.
int expander (t_shell *shell)
 Expander modülünün giriş noktası ve ana döngüsü.

Fonksiyon Dokümantasyonu

◆ expand_variable()

int expand_variable ( t_shell * shell,
t_token * token )

Bir token'ın içeriğindeki değişkenleri ($VAR) tarar ve değiştirir.

Bu fonksiyon, token'ın string değeri üzerinde bir döngü kurar. '$' işareti bulduğunda, bunun geçerli bir değişken başlangıcı olup olmadığına bakar (can_expand). Geçerliyse, değiştirme işlemini yapan 'process_variable_replacement' fonksiyonunu çağırır.

Parametreler
shellÇevre değişkenlerine ve çıkış koduna erişim sağlayan ana yapı.
tokenİçeriği taranacak ve güncellenecek olan token.
Döndürdüğü değer
int Başarılıysa 1, malloc hatası oluşursa 0.

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

Referanslar can_expand(), process_variable_replacement(), QUOTE_NONE, s_token::quote_type ve s_token::value.

Referans veren expander_dispatcher().

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

◆ expander_dispatcher()

int expander_dispatcher ( t_shell * shell,
t_token * current,
t_token * prev )

Token'ın genişletilip genişletilmeyeceğine karar veren dağıtıcı.

Bu fonksiyon iki temel kuralı kontrol eder:

  1. Heredoc Koruması: Eğer önceki token '<<' ise, şimdiki token bir sınırlayıcıdır (delimiter) ve ASLA genişletilmez.
  2. Tırnak Kuralı: Sadece WORD tipindeki ve TEK TIRNAK içinde olmayan tokenlar genişletilir.
Parametreler
shellAna yapı.
currentİşlem sırasındaki mevcut token.
prevBir önceki token (Heredoc kontrolü için gereklidir).
Döndürdüğü değer
int Başarılıysa (veya işlem gerekmiyorsa) 1, hata varsa 0.

expander.c dosyasının 72 numaralı satırında tanımlanmıştır.

Referanslar expand_variable(), QUOTE_SINGLE, s_token::quote_type, TOKEN_HEREDOC, TOKEN_WORD ve s_token::type.

Referans veren expander().

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

◆ expander()

int expander ( t_shell * shell)

Expander modülünün giriş noktası ve ana döngüsü.

Token listesini baştan sona gezer. Her adımda bir önceki token'ı (prev_token) hafızasında tutarak ilerler. Bu "takipçi pointer" mantığı, Heredoc durumlarını tespit etmek için kullanılır.

Parametreler
shellToken listesini ve env listesini içeren ana yapı.
Döndürdüğü değer
int Tüm işlemler başarılıysa 1, herhangi bir malloc hatasında 0.

expander.c dosyasının 94 numaralı satırında tanımlanmıştır.

Referanslar expander_dispatcher(), remove_empty_tokens() ve s_shell::token_list.

Referans veren process_line().

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