Changeset 8437
- Timestamp:
- 02/27/13 15:12:32 (9 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-webif-lib.c
r8436 r8437 387 387 char* separator = "/* External CSS */"; 388 388 char* oldallocated = allocated; 389 CSS = tpl_getUnparsedTpl("CSS" );389 CSS = tpl_getUnparsedTpl("CSS", 1, ""); 390 390 int32_t newsize = strlen(CSS) + strlen(separator) + 2; 391 391 if (oldallocated) newsize += strlen(oldallocated) + 1; … … 404 404 405 405 } else { 406 CSS = tpl_getUnparsedTpl("CSS" );407 JSCRIPT = tpl_getUnparsedTpl("JSCRIPT" );406 CSS = tpl_getUnparsedTpl("CSS", 1, ""); 407 JSCRIPT = tpl_getUnparsedTpl("JSCRIPT", 1, ""); 408 408 #ifdef TOUCH 409 TOUCH_CSS = tpl_getUnparsedTpl("TOUCH_CSS" );410 TOUCH_JSCRIPT = tpl_getUnparsedTpl("TOUCH_JSCRIPT" );409 TOUCH_CSS = tpl_getUnparsedTpl("TOUCH_CSS", 1, ""); 410 TOUCH_JSCRIPT = tpl_getUnparsedTpl("TOUCH_JSCRIPT", 1, ""); 411 411 char* res_tpl = !subdir || strcmp(subdir, TOUCH_SUBDIR) 412 412 ? (filen == 1 ? CSS : JSCRIPT) -
trunk/module-webif-tpl.c
r8436 r8437 230 230 /* Returns an unparsed template either from disk or from internal templates. 231 231 Note: You must free() the result after using it and you may get NULL if an error occured!*/ 232 static char *__tpl_getUnparsedTpl(const char* name, bool removeHeader) {232 char *tpl_getUnparsedTpl(const char* name, int8_t removeHeader, const char* subdir) { 233 233 int32_t i; 234 234 const struct tpl *tpl = NULL; … … 245 245 if (tpl && cfg.http_tpl) { 246 246 char path[255]; 247 if (strlen(tpl_getFilePathInSubdir(cfg.http_tpl, "", name, ".tpl", path, 255)) > 0 && file_exists(path)) 247 if ((strlen(tpl_getFilePathInSubdir(cfg.http_tpl, subdir, name, ".tpl", path, 255)) > 0 && file_exists(path)) 248 || (strlen(subdir) > 0 249 #ifdef TOUCH 250 && strcmp(subdir, TOUCH_SUBDIR) 251 #endif 252 && strlen(tpl_getFilePathInSubdir(cfg.http_tpl, "" , name, ".tpl", path, 255)) > 0 && file_exists(path))) 248 253 { 249 254 FILE *fp; … … 292 297 } 293 298 294 char *tpl_getUnparsedTpl(const char* name) {295 return __tpl_getUnparsedTpl(name, true);296 }297 298 299 /* Returns the specified template with all variables/other templates replaced or an 299 300 empty string if the template doesn't exist. Do not free the result yourself, it 300 301 will get automatically cleaned up! */ 301 302 char *tpl_getTpl(struct templatevars *vars, const char* name) { 302 char *tplorg = tpl_getUnparsedTpl(name );303 char *tplorg = tpl_getUnparsedTpl(name, 1, tpl_getVar(vars, "SUBDIR")); 303 304 if (!tplorg) return ""; 304 305 char *tplend = tplorg + strlen(tplorg); … … 371 372 372 373 /* Checks all disk templates in a directory if they are still current or may need upgrade! */ 373 void tpl_check DiskRevisions(void) {374 if (!cfg.http_tpl)375 return;374 void tpl_checkOneDirDiskRevisions(const char* subdir) { 375 char dirpath[255] = "\0"; 376 snprintf(dirpath, 255, "%s%s", cfg.http_tpl ? cfg.http_tpl : "", subdir); 376 377 int32_t i; 377 378 char path[255]; 378 379 for(i = 0; i < tpls_count; ++i) { 379 380 const struct tpl *tpl = &tpls[i]; 380 if (strncmp(tpl->tpl_name, "IC", 2) != 0 && strlen(tpl_getTplPath(tpl->tpl_name, cfg.http_tpl, path, 255)) > 0 && file_exists(path)) {381 if (strncmp(tpl->tpl_name, "IC", 2) != 0 && strlen(tpl_getTplPath(tpl->tpl_name, dirpath, path, 255)) > 0 && file_exists(path)) { 381 382 int8_t error = 1; 382 char *tplorg = __tpl_getUnparsedTpl(tpl->tpl_name, false); // Do not strip the header383 char *tplorg = tpl_getUnparsedTpl(tpl->tpl_name, 0, subdir); 383 384 unsigned long checksum = 0, curchecksum = crc32(0L, (unsigned char*)tpl->tpl_data, tpl->tpl_data_len); 384 385 char *pch1 = strstr(tplorg,"<!--OSCam"); … … 402 403 if (error) cs_log("If you are sure that it is current, add the following line at the beginning of the template to suppress this warning: <!--OSCam;%lu;%s;%s-->", curchecksum, CS_VERSION, CS_SVN_VERSION); 403 404 free(tplorg); 405 } 406 } 407 } 408 409 /* Checks whether disk templates need upgrade - including sub-directories */ 410 void tpl_checkDiskRevisions(void) { 411 char subdir[255]; 412 char dirpath[255]; 413 if (cfg.http_tpl) { 414 tpl_checkOneDirDiskRevisions(""); 415 DIR *hdir; 416 struct dirent entry; 417 struct dirent *result; 418 struct stat s; 419 if ((hdir = opendir(cfg.http_tpl)) != NULL) { 420 while(cs_readdir_r(hdir, &entry, &result) == 0 && result != NULL) { 421 if (strcmp(".", entry.d_name) == 0 || strcmp("..", entry.d_name) == 0) { 422 continue; 423 } 424 snprintf(dirpath, 255, "%s%s", cfg.http_tpl, entry.d_name); 425 if (stat(dirpath, &s) == 0) { 426 if (s.st_mode & S_IFDIR) { 427 snprintf(subdir, 255, 428 #ifdef WIN32 429 "%s\\" 430 #else 431 "%s/" 432 #endif 433 , entry.d_name); 434 tpl_checkOneDirDiskRevisions(subdir); 435 } 436 } 437 } 438 closedir(hdir); 404 439 } 405 440 } -
trunk/module-webif-tpl.h
r8436 r8437 43 43 char *tpl_getTplPath(const char *name, const char *path, char *result, uint32_t resultsize); 44 44 char *tpl_getTpl(struct templatevars *vars, const char* name); 45 char *tpl_getUnparsedTpl(const char* name );45 char *tpl_getUnparsedTpl(const char* name, int8_t removeHeader, const char* subdir); 46 46 47 47 int32_t tpl_saveIncludedTpls(const char *path); 48 48 49 void tpl_checkOneDirDiskRevisions(const char* subdir); 49 50 void tpl_checkDiskRevisions(void); 50 51 -
trunk/module-webif.c
r8436 r8437 3642 3642 *keepalive = 0; 3643 3643 if(!apicall){ 3644 char *CSS = tpl_getUnparsedTpl("CSS" );3644 char *CSS = tpl_getUnparsedTpl("CSS", 1, ""); 3645 3645 tpl_addVar(vars, TPLADD, "STYLESHEET", CSS); 3646 3646 free(CSS); … … 3670 3670 *keepalive = 0; 3671 3671 if(!apicall){ 3672 char *CSS = tpl_getUnparsedTpl("CSS" );3672 char *CSS = tpl_getUnparsedTpl("CSS", 1, ""); 3673 3673 tpl_addVar(vars, TPLADD, "STYLESHEET", CSS); 3674 3674 free(CSS);
Note:
See TracChangeset
for help on using the changeset viewer.