Portál AbcLinuxu, 11. května 2025 04:33

Dotaz: Pridať premennú do konfiguračného súboru.

19.1.2020 16:49 kysučan | skóre: 14
Pridať premennú do konfiguračného súboru.
Přečteno: 1011×
Odpovědět | Admin
Páni, helfne mi s tým niekto? Potrebujem v source vytvoriť premennú , ktorá sa bude dáť načítať z konfigurečného súboru(lincardemu.dat) - caid = 0xXXX a použije sa v irdeto.c.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jendа avatar 19.1.2020 17:41 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.
Odpovědět | | Sbalit | Link | Blokovat | Admin
char buf[50] = {0};
FILE * f = fopen("lincardemu.dat", "r");
fread(buf, 1, 49, f);
caid = atoi(buf);
fclose(f);
19.1.2020 18:10 kysučan | skóre: 14
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.
Dík za nakopnutie, asi je potrebné aj:

int caid = 0;

ale aj po úspešnej kompilácií mi to vyhadzuje chybu:
root@orangepipc:~/test_lce# ./lincardemu -r
  4: caid
   ** lincardemu.dat: syntax error in assignment value
There were 1 errors reading lincardemu.dat
..syntax error(s) in config file lincardemu.dat
19.1.2020 19:13 kysučan | skóre: 14
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.
Túto chybu asi nie je potrebné riešiť, pokiaľ to dám do podsekcie([irdeto]), tak ok - asi tam nie je parser parameter. Ale zatial nefunkčné. Ak irdeto.c:
  ... 
           int caid ;
                  char buf[50] = {0};
                  FILE * f = fopen("lincardemu.dat", "r");
                  fread(buf, 1, 49, f);
                  caid = atoi(buf);
                  printf ("caid %d.\n",caid);
                  fclose(f);

newcamd_decode_ecm((int)caid, cwsbuf, (int)cwsbuf_len, ins_reply_ok+14, NULL);
...
do lincardemu.dat:
[Irdeto]
caid = 0x609
debug:

caid 0.

19.1.2020 21:33 kysučan | skóre: 14
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.
Ok, už som to naštudoval - kostrbaté, ale funkčné, dík.
21.1.2020 13:35 kysučan | skóre: 14
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Páni ešte poprosím, ako spraviť, aby táto premenná bola načítaná a definovaná na inom mieste programu(aby sa nemusela načitávať každým volaním void DoIrdeto) a nie priamo vo void DoIrdeto...

skúšam, modifikujem, ale zatial 0 bodov:

int test(){ 
                  int test;
                  char buf[50] = {0};
                  FILE * f = fopen("caid_ird.dat", "r");
                  fread(buf, 1, 49, f);
                  test = strtol(buf, NULL, 16);
                  printf ("caid %x.\n",test);
                  fclose(f);
              }
Gréta avatar 22.1.2020 12:23 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.

hhhhhhhhhhhhhhhhhhhmmmmmmmmmm co ji třeba strčit do statický proměný?? hele

nebo by ji šlo taky strkat jako argument do tý funkce doiredo takže držet si ji někde tam odkaď je ta funkce doiredo jako volaná ;D

22.1.2020 15:44 kysučan | skóre: 14
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.
Po:
static int test = 0;
test = caid();
int caid(){ 
                  char buf[50] = {0};
                  FILE * f = fopen("caid_ird.dat", "r");
                  fread(buf, 1, 49, f);
                  test = strtol(buf, NULL, 16);
                  printf ("caid %x.\n",test);
                  fclose(f);
                                }
mi vyhodí chybu:
root@orangepipc:~/test_lce# make
OSTARGET='UNIX' uname='Linux' date: 20200122
gcc -Wall  -O2 -g  -DUNIX -DVERS=\"0.21a\"   -c -o irdeto.o irdeto.c
irdeto.c:26:1: warning: data definition has no type or storage class
 test = caid();
 ^
irdeto.c:26:1: warning: type defaults to ‘int’ in declaration of ‘test’ [-Wimplicit-int]
irdeto.c:26:1: error: redefinition of ‘test’
irdeto.c:25:12: note: previous definition of ‘test’ was here
 static int test = 0;
            ^
irdeto.c:26:1: warning: implicit declaration of function ‘caid’ [-Wimplicit-function-declaration]
 test = caid();
 ^
irdeto.c:26:1: error: initializer element is not constant
irdeto.c:25:12: warning: ‘test’ defined but not used [-Wunused-variable]
 static int test = 0;
            ^
irdeto.c: In function ‘caid’:
irdeto.c:35:33: warning: control reaches end of non-void function [-Wreturn-type]
                                 }
                                 ^
builtin: recipe for target 'irdeto.o' failed
make: *** [irdeto.o] Error 1
Gréta avatar 22.1.2020 17:00 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.

koukni jak tam voni používaj statickou proměnou tps_crypt_type v tom souboru irdeto.c ;D

22.1.2020 17:20 kysučan | skóre: 14
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.
Ok, vyriešené, musím tú funkciu volať z main.c.
Gréta avatar 21.1.2020 20:23 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.
Odpovědět | | Sbalit | Link | Blokovat | Admin

ten zdrojáček mi nejde stáhnout :'(

wget http://www.streamboard.tv/oscam/attachment/ticket/369/lincardemu-0.21a.tar.gz
--2020-01-21 20:21:05--  http://www.streamboard.tv/oscam/attachment/ticket/369/lincardemu-0.21a.tar.gz
Překládám www.streamboard.tv (www.streamboard.tv)… 185.165.169.49
Navazuje se spojení s www.streamboard.tv (www.streamboard.tv)|185.165.169.49|:80… spojeno.
HTTP požadavek odeslán, program čeká na odpověď… 500 Internal Server Error
2020-01-21 20:21:09 CHYBA 500: Internal Server Error.
Zelená energetická soustava založená na obnovitelnejch zdrojích energie versus realnej svět 🤡🇪🇸
22.1.2020 07:51 kysučan | skóre: 14
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.
http://www.streamboard.tv/oscam/raw-attachment/ticket/369/lincardemu-0.21a.tar.gz
23.1.2020 08:20 kysučan | skóre: 14
Rozbalit Rozbalit vše Re: Pridať premennú do konfiguračného súboru.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Páni ešte posledné dve otázky. Funkciu môžem definovať ako int, void, char, float a vždy sa vykoná. Aký typ je teda správny pre takýto druh funkcie.

Ak dám tú funkciu do main.c, ako dosiahnem toho, aby sa premenná int test definovala len jeden_krát. Teraz ju musím definovať ako v main.c, tak aj v irdeto.c, kde si ju vyžaduje funkcia newcamd_decode_ecm.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.