@@ -696,9 +696,8 @@ static LY_ERR
696
696
lysp_load_module_check (const struct ly_ctx * ctx , struct lysp_module * mod , struct lysp_submodule * submod , void * data )
697
697
{
698
698
struct lysp_load_module_check_data * info = data ;
699
- const char * filename , * dot , * rev , * name ;
699
+ const char * name ;
700
700
uint8_t latest_revision ;
701
- size_t len ;
702
701
struct lysp_revision * revs ;
703
702
704
703
name = mod ? mod -> mod -> name : submod -> name ;
@@ -739,29 +738,7 @@ lysp_load_module_check(const struct ly_ctx *ctx, struct lysp_module *mod, struct
739
738
}
740
739
}
741
740
if (info -> path ) {
742
- /* check that name and revision match filename */
743
- filename = strrchr (info -> path , '/' );
744
- if (!filename ) {
745
- filename = info -> path ;
746
- } else {
747
- filename ++ ;
748
- }
749
- /* name */
750
- len = strlen (name );
751
- rev = strchr (filename , '@' );
752
- dot = strrchr (info -> path , '.' );
753
- if (strncmp (filename , name , len ) ||
754
- ((rev && (rev != & filename [len ])) || (!rev && (dot != & filename [len ])))) {
755
- LOGWRN (ctx , "File name \"%s\" does not match module name \"%s\"." , filename , name );
756
- }
757
- /* revision */
758
- if (rev ) {
759
- len = dot - ++ rev ;
760
- if (!revs || (len != LY_REV_SIZE - 1 ) || strncmp (revs [0 ].date , rev , len )) {
761
- LOGWRN (ctx , "File name \"%s\" does not match module revision \"%s\"." , filename ,
762
- revs ? revs [0 ].date : "none" );
763
- }
764
- }
741
+ ly_check_module_filename (ctx , name , revs ? revs [0 ].date : NULL , info -> path );
765
742
}
766
743
return LY_SUCCESS ;
767
744
}
@@ -2613,3 +2590,34 @@ lys_stmt_flags(enum ly_stmt stmt)
2613
2590
2614
2591
return 0 ;
2615
2592
}
2593
+
2594
+ void
2595
+ ly_check_module_filename (const struct ly_ctx * ctx , const char * name , const char * revision , const char * filename )
2596
+ {
2597
+ const char * basename , * rev , * dot ;
2598
+ size_t len ;
2599
+
2600
+ /* check that name and revision match filename */
2601
+ basename = strrchr (filename , '/' );
2602
+ if (!basename ) {
2603
+ basename = filename ;
2604
+ } else {
2605
+ basename ++ ; /* leading slash */
2606
+ }
2607
+ rev = strchr (basename , '@' );
2608
+ dot = strrchr (basename , '.' );
2609
+
2610
+ /* name */
2611
+ len = strlen (name );
2612
+ if (strncmp (basename , name , len ) ||
2613
+ ((rev && (rev != & basename [len ])) || (!rev && (dot != & basename [len ])))) {
2614
+ LOGWRN (ctx , "File name \"%s\" does not match module name \"%s\"." , basename , name );
2615
+ }
2616
+ if (rev ) {
2617
+ len = dot - ++ rev ;
2618
+ if (!revision || (len != LY_REV_SIZE - 1 ) || strncmp (revision , rev , len )) {
2619
+ LOGWRN (ctx , "File name \"%s\" does not match module revision \"%s\"." , basename ,
2620
+ revision ? revision : "none" );
2621
+ }
2622
+ }
2623
+ }
0 commit comments