|
Minishell 1.0
42 School Minishell Project - A simple shell implementation
|
Bu dosyanın kaynak koduna git.
Fonksiyonlar | |
| int | can_expand (char next_c) |
| '$' işaretinden sonra gelen karakterin genişletmeye uygun olup olmadığını kontrol eder. | |
| int | get_var_name_len (char *str) |
| Değişken isminin uzunluğunu hesaplar. | |
| char * | get_var_value (t_shell *shell, char *var_name) |
| Bir değişkenin değerini bulur ve kopyasını döndürür. | |
| void | process_token_cleanup (t_shell *shell, t_token_cleaner *vars) |
| Tek bir token düğümü için silme veya ilerleme mantığını yürütür. | |
| void | remove_empty_tokens (t_shell *shell) |
| Expander sonrası oluşan boş ve tırnaksız tokenları listeden temizler. | |
| int can_expand | ( | char | next_c | ) |
'$' işaretinden sonra gelen karakterin genişletmeye uygun olup olmadığını kontrol eder.
Bash kurallarına göre '$' işaretinden sonra boşluk, çift tırnak veya string sonu gelirse, bu bir değişken değildir; literal '$' işaretidir.
| next_c | Dolar işaretinden sonra gelen karakter. |
expander_utils.c dosyasının 28 numaralı satırında tanımlanmıştır.
Referans veren expand_heredoc_line() ve expand_variable().
| int get_var_name_len | ( | char * | str | ) |
Değişken isminin uzunluğunu hesaplar.
'$' işaretinden sonraki karakterleri tarar.
| str | Dolar işaretinden hemen sonra başlayan string. |
expander_utils.c dosyasının 46 numaralı satırında tanımlanmıştır.
Referans veren expand_dollar() ve extract_variable_info().
| char * get_var_value | ( | t_shell * | shell, |
| char * | var_name ) |
Bir değişkenin değerini bulur ve kopyasını döndürür.
Bu fonksiyon, '$?' özel durumunu ve normal değişkenleri yönetir. Dönen değer her zaman malloc ile ayrılmıştır, çağıran free etmelidir.
| shell | Ana yapı (env listesi ve exit status için). |
| var_name | Değişkenin adı (Örn: "USER" veya "?"). |
expander_utils.c dosyasının 82 numaralı satırında tanımlanmıştır.
Referanslar s_shell::env_list, s_shell::exit_status ve get_env_value().
Referans veren expand_dollar() ve extract_variable_info().
| void process_token_cleanup | ( | t_shell * | shell, |
| t_token_cleaner * | vars ) |
Tek bir token düğümü için silme veya ilerleme mantığını yürütür.
Token içeriğini kontrol eder. Eğer boş ve tırnaksız bir kelimeyse, düğümü listeden çıkarır, belleği temizler ve 'current' pointerını ilerletir. Değilse, 'prev' ve 'current' pointerlarını bir adım ileri taşır.
| shell | Listenin başını (head) güncellemek için gerekli. |
| vars | Döngü değişkenlerini tutan struct. |
expander_utils.c dosyasının 114 numaralı satırında tanımlanmıştır.
Referanslar s_token_cleaner::current, free_token_content(), s_token_cleaner::prev, QUOTE_NONE, s_token::quote_type, s_token_cleaner::temp, s_shell::token_list, TOKEN_WORD, s_token::type ve s_token::value.
Referans veren remove_empty_tokens().
| void remove_empty_tokens | ( | t_shell * | shell | ) |
Expander sonrası oluşan boş ve tırnaksız tokenları listeden temizler.
Örn: "echo $olmayan" -> Token listesinde boş bir düğüm oluşturur. Bu fonksiyon o düğümü siler ki komutlar (örn: echo -n) argümanları doğru algılayabilsin.
| shell | Ana yapı. |
expander_utils.c dosyasının 148 numaralı satırında tanımlanmıştır.
Referanslar s_token_cleaner::current, process_token_cleanup() ve s_shell::token_list.
Referans veren expander().