@@ -44,9 +44,9 @@ def add_symlink(self, name: str, target: str):
4444 """ Adds a symlink to the CPIO archive. """
4545 self ._build_cpio_entry (name = name , entry_type = CPIOModes ['Symlink' ].value , data = target )
4646
47- def add_chardev (self , name : str , major : int , minor : int ):
47+ def add_chardev (self , name : str , major : int , minor : int , * args , ** kwargs ):
4848 """ Adds a character device to the CPIO archive. """
49- self ._build_cpio_entry (name = name , entry_type = CPIOModes ['CharDev' ].value , rdevmajor = major , rdevminor = minor )
49+ self ._build_cpio_entry (name = name , entry_type = CPIOModes ['CharDev' ].value , rdevmajor = major , rdevminor = minor , * args , ** kwargs )
5050
5151 def read_cpio_file (self , file_path : Path ):
5252 """ Creates a CPIOReader object and reads the file. """
@@ -64,12 +64,16 @@ def list_files(self):
6464 """ Returns a list of files in the CPIO archive. """
6565 return '\n ' .join ([name for name in self .entries .keys ()])
6666
67- def _build_cpio_entry (self , name : str , entry_type : CPIOModes , data = None , ** kwargs ):
67+ def _build_cpio_entry (self , name : str , entry_type : CPIOModes , data = None , * args , * *kwargs ):
6868 """ Creates a CPIOData object and adds it to the CPIO archive. """
69+ overrides = self .overrides .copy ()
70+ if mode := kwargs .pop ('mode' , None ):
71+ overrides ['mode' ] = mode
72+ self .logger .info ("Setting override: mode=%s" % mode )
6973 kwargs = {'name' : name , 'structure' : self .structure , 'mode' : entry_type , 'data' : data ,
70- 'overrides' : self . overrides , 'logger' : self .logger , '_log_init' : False , ** kwargs }
74+ 'overrides' : overrides , 'logger' : self .logger , '_log_init' : False , ** kwargs }
7175
72- self .entries .add_entry (CPIOData .create_entry (** kwargs ))
76+ self .entries .add_entry (CPIOData .create_entry (* args , * *kwargs ))
7377
7478 def __str__ (self ):
7579 return "\n " .join ([str (f ) for f in self .entries .values ()])
0 commit comments