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

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.

Fonksiyon Dokümantasyonu

◆ can_expand()

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.

Parametreler
next_cDolar işaretinden sonra gelen karakter.
Döndürdüğü değer
int Genişletilebilir ise 1, değilse 0.

expander_utils.c dosyasının 28 numaralı satırında tanımlanmıştır.

Referans veren expand_heredoc_line() ve expand_variable().

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

◆ get_var_name_len()

int get_var_name_len ( char * str)

Değişken isminin uzunluğunu hesaplar.

'$' işaretinden sonraki karakterleri tarar.

  • '$?' -> Uzunluk 1.
  • '$1' (Rakam) -> Uzunluk 1.
  • '$VAR' -> Alfanümerik veya '_' bitene kadar sayar.
Parametreler
strDolar işaretinden hemen sonra başlayan string.
Döndürdüğü değer
int Değişken isminin uzunluğu.

expander_utils.c dosyasının 46 numaralı satırında tanımlanmıştır.

Referans veren expand_dollar() ve extract_variable_info().

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

◆ get_var_value()

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.

Parametreler
shellAna yapı (env listesi ve exit status için).
var_nameDeğişkenin adı (Örn: "USER" veya "?").
Döndürdüğü değer
char* Değerin kopyası veya bulunamazsa boş string ("").

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().

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

◆ process_token_cleanup()

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.

Parametreler
shellListenin başını (head) güncellemek için gerekli.
varsDö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().

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

◆ 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.

Parametreler
shellAna 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().

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