Beispiel #1
0
 def show_files_in_dir(__, index_dir):
     __.Status_bar.showMessage("Actualistion des fichiers du dossier")
     __.Struct.List_fichier.clear()
     fichier = file(__.archive_ind, "rb")
     fichier.readline()
     ind_dossier = base_int(fichier.read(__.arborescence[1]))
     nbr_fichiers = base_int(fichier.readline()[:-1])
     while ind_dossier <= index_dir:
         if ind_dossier == index_dir:
             __.Struct.Fichier.setText("Fichiers : " + str(nbr_fichiers))
             for j in range(nbr_fichiers):
                 __.Struct.List_fichier.addItem(fichier.readline()[:-1])
                 fichier.readline()
                 if not fichier.readline(): ind_dossier = index_dir + 1
         else:
             for j in range(nbr_fichiers * 3):
                 if not fichier.readline(): ind_dossier = index_dir + 1
         ind_dossier = base_int(fichier.read(__.arborescence[1]))
         nbr_fichiers = base_int(fichier.readline()[:-1])
         if index_dir:
             __.Status_progress.setValue(50 + ind_dossier / index_dir * 50)
         else:
             __.Status_progress.setValue(100)
         if not nbr_fichiers: break
     fichier.close()
     __.Status_bar.showMessage("Actualisation terminée")
Beispiel #2
0
	def slot_add_fichier(__):
		liste = qt.QFileDialog.getOpenFileNames(__, "Ajouter des fichiers à l'archive")
		if __.Tabs.currentIndex() == 0:
			for path in liste:
				__.Struct2.List_fichier.addItem(path)
			__.Struct2.Fichier.setText("Fichiers : " + str(__.Struct2.List_fichier.count()))
		elif liste:
			_type = file(__.archive, "rb").read(1)
			if _type == "0":
				for nom in liste[ : -1]: add_file_in_file(__.archive, nom, False)
				add_file_in_file(__.archive, liste[-1])
				__.show_files()
			elif _type == "1":
				index_dir = __.arborescence[0][__.index_dir[0]][__.index_dir[1]][1]


				fichier = file(__.archive_ind, "rb")
				fichier.readline()
				ind_dossier = base_int(fichier.read(__.arborescence[1]))
				nbr_fichiers = base_int(fichier.readline()[:-1])
				read = None
				while ind_dossier <=index_dir:
					if ind_dossier == index_dir:
						fichier.readline()
						read = base_int(fichier.readline()[ : -1], 254)
						break
					else:
						for j in range(nbr_fichiers*3):
							if not fichier.readline(): ind_dossier = index_dir + 1
					ind_dossier = base_int(fichier.read(__.arborescence[1]))
					nbr_fichiers = base_int(fichier.readline()[:-1])
					if not nbr_fichiers: break
				fichier.close()
				add_files_in_dir(__.archive, liste, read)
				__.show_files_in_dir(index_dir)
Beispiel #3
0
def get_arborescence(fusioned,start=-1,stop=-1,current=0):
      dirs = []
      if start != stop :
            start, stop = void_read(fusioned,start-current,stop)
            start += current
      else:fusioned.read(1)

      len_nbr = base_int(fusioned.read(1))
      nbr_dir = base_int(fusioned.read(len_nbr))
      for i in range(nbr_dir) : dirs.append(fusioned.readline()[:-1]+"/")
      for i,f in enumerate(dirs):
            if i:
                  index = f[:len_nbr]
                  dirs[i] = index.replace(index,dirs[base_int(index)])+f[len_nbr:]
      return dirs, nbr_dir, len_nbr
Beispiel #4
0
def add_files_in_dir(nom_fuz, noms, start_dir, printer=0):
    #start_dir numero de ligne ou commence le dossier
    fusioned = file(nom_fuz, "rb")
    copy = file(get_path(nom_fuz) + "copy", "wb")
    ligne = 0
    if printer: print "copie du debut du fichier de fusion"
    for i in range(start_dir - 3):
        copy.write(fusioned.readline())
    string = fusioned.readline()[:-1]
    copy.write(
        int_len(int_base(base_int(string, 254) +
                         len(noms), 254), len(string)) + "\n")
    for nom in noms:
        if printer: print nom, "\ncalcule de la taille du fichier"
        ligne = 0
        for i in file(nom, "rb").read_lines():
            ligne += 1
        copy.write(get_name(nom) + "\n" + int_base(ligne, 254) + "\n")
        if printer: print "copie du fichier"
        for i in file(nom, "rb").read_lines():
            copy.write(i)
        copy.write("\n")
    if printer: print "copie de la fin du fichier de fusion"
    for i in fusioned.read_lines():
        copy.write(i)
    copy.close()
    remove(nom_fuz)
    rename(get_path(nom_fuz) + "copy", nom_fuz)
    if printer: print "creation de l'index du fichier de fusion"
    create_index_dir(nom_fuz)
Beispiel #5
0
def voir_files(fichier,start=-1,stop=-1,current=0):
      fusioned = file(fichier,"rb")

      if start != stop :
            start, stop = void_read(fusioned,start-current,stop)
            start += current
      else:fusioned.read(1)
      string = fusioned.readline()
      files = []
      ligne = 0
      read = -1

      while string != "":
            if read == -1:
                  if string == "\n":
                        string = fusioned.readline()
                        files[-1] = ligne
                        ligne += 1

                  if string == "": break
                  else:
                        name = string[:-1]
                        if files != [] :
                              files[-1] = ligne
                              yield files
                        files = [name,ligne+2,ligne]

            elif read == -2: read = base_int(string[:-1],254)

            string = fusioned.readline()
            read -= 1
            ligne += 1
            if start > -1 < stop <= ligne: break
      fusioned.close()
Beispiel #6
0
def get_arborescence(fusioned, start=-1, stop=-1, current=0):
    dirs = []
    if start != stop:
        start, stop = void_read(fusioned, start - current, stop)
        start += current
    else:
        fusioned.read(1)

    len_nbr = base_int(fusioned.read(1))
    nbr_dir = base_int(fusioned.read(len_nbr))
    for i in range(nbr_dir):
        dirs.append(fusioned.readline()[:-1] + "/")
    for i, f in enumerate(dirs):
        if i:
            index = f[:len_nbr]
            dirs[i] = index.replace(index, dirs[base_int(index)]) + f[len_nbr:]
    return dirs, nbr_dir, len_nbr
Beispiel #7
0
	def slot_extraire_file(__):
		if __.Struct.List_fichier.currentItem():
			__.Status_bar.showMessage("Extraction du fichier en cours")
			filename = unicode(__.Struct.List_fichier.currentItem().text(), "cp1252")

			fichier = file(__.archive_ind, "rb")
			fichier.readline()

			ind_dossier = base_int(fichier.read(__.arborescence[1]))
			nbr_fichiers = base_int(fichier.readline()[:-1])
			index_dir = __.get_index_dir_init()
			while ind_dossier <= index_dir:
				if ind_dossier == index_dir:
					for j in range(nbr_fichiers):
						temp = fichier.readline()[:-1]
						if  temp == filename:
							start = fichier.readline()[:-1]
							stop = fichier.readline()[:-1]
							extract_file(__.archive, filename, base_int(start, 254), base_int(stop, 254), unicode(__.Path.text(), "cp1252"))
							ind_dossier = index_dir + 1
							break
						else:
							fichier.readline()
							if not fichier.readline(): ind_dossier = index_dir + 1
				else:
					for j in range(nbr_fichiers*3):
						if not fichier.readline(): ind_dossier = index_dir + 1
				ind_dossier = base_int(fichier.read(__.arborescence[1]))
				nbr_fichiers = base_int(fichier.readline()[:-1])
				if index_dir: __.Status_progress.setValue(50 + ind_dossier / index_dir * 50)
				else: __.Status_progress.setValue(100)
				if not nbr_fichiers: break
			__.Status_bar.showMessage("Extraction du fichier terminée")
		else: __.Status_bar.showMessage("Aucun fichier sélectionné")
Beispiel #8
0
    def slot_add_fichier(__):
        liste = qt.QFileDialog.getOpenFileNames(
            __, "Ajouter des fichiers à l'archive")
        if __.Tabs.currentIndex() == 0:
            for path in liste:
                __.Struct2.List_fichier.addItem(path)
            __.Struct2.Fichier.setText("Fichiers : " +
                                       str(__.Struct2.List_fichier.count()))
        elif liste:
            _type = file(__.archive, "rb").read(1)
            if _type == "0":
                for nom in liste[:-1]:
                    add_file_in_file(__.archive, nom, False)
                add_file_in_file(__.archive, liste[-1])
                __.show_files()
            elif _type == "1":
                index_dir = __.arborescence[0][__.index_dir[0]][
                    __.index_dir[1]][1]

                fichier = file(__.archive_ind, "rb")
                fichier.readline()
                ind_dossier = base_int(fichier.read(__.arborescence[1]))
                nbr_fichiers = base_int(fichier.readline()[:-1])
                read = None
                while ind_dossier <= index_dir:
                    if ind_dossier == index_dir:
                        fichier.readline()
                        read = base_int(fichier.readline()[:-1], 254)
                        break
                    else:
                        for j in range(nbr_fichiers * 3):
                            if not fichier.readline():
                                ind_dossier = index_dir + 1
                    ind_dossier = base_int(fichier.read(__.arborescence[1]))
                    nbr_fichiers = base_int(fichier.readline()[:-1])
                    if not nbr_fichiers: break
                fichier.close()
                add_files_in_dir(__.archive, liste, read)
                __.show_files_in_dir(index_dir)
Beispiel #9
0
def defusion_files(fichier, appel=0, new_path=""):
    path = "/".join(fichier.replace("\\", "/").split("/")[:-1])
    if path != "": path += "/"

    fusioned = file(fichier, "rb")
    fusioned.read(1)
    erreur = 0
    if new_path: dossier = new_path
    else:
        dossier = try_name(".".join(
            fichier.replace("\\", "/").split(".")[:-1]))
    print dossier
    try:
        mkdir(dossier)
    except:
        pass

    if erreur <= 100:
        string = fusioned.readline()
        read = -1

        while string != "":
            if read == -1:
                if string == "\n":
                    fichier = file(name, "ab")
                    fichier.write("\n")
                    fichier.close()
                    string = fusioned.readline()

                if string == "": break
                else:
                    name = try_file(dossier + "/" + string[:-1])
                    print "\t", name
                    fichier = file(name, "wb")

            elif read == -2:
                read = base_int(string[:-1], 254)
            elif read:
                fichier.write(string)
            else:
                fichier.write(string[:-1])
                fichier.close()

            string = fusioned.readline()
            read -= 1
        fusioned.close()
    else:
        dossier = None
    return dossier
Beispiel #10
0
	def show_files_in_dir(__, index_dir):
		__.Status_bar.showMessage("Actualistion des fichiers du dossier")
		__.Struct.List_fichier.clear()
		fichier = file(__.archive_ind, "rb")
		fichier.readline()
		ind_dossier = base_int(fichier.read(__.arborescence[1]))
		nbr_fichiers = base_int(fichier.readline()[:-1])
		while ind_dossier <=index_dir:
			if ind_dossier == index_dir:
				__.Struct.Fichier.setText("Fichiers : " + str(nbr_fichiers))
				for j in range(nbr_fichiers):
					__.Struct.List_fichier.addItem(fichier.readline()[:-1])
					fichier.readline()
					if not fichier.readline(): ind_dossier = index_dir + 1
			else:
				for j in range(nbr_fichiers*3):
					if not fichier.readline(): ind_dossier = index_dir + 1
			ind_dossier = base_int(fichier.read(__.arborescence[1]))
			nbr_fichiers = base_int(fichier.readline()[:-1])
			if index_dir: __.Status_progress.setValue(50 + ind_dossier / index_dir * 50)
			else: __.Status_progress.setValue(100)
			if not nbr_fichiers: break
		fichier.close()
		__.Status_bar.showMessage("Actualisation terminée")
def defusion_files(fichier, appel=0, new_path=""):
	path = "/".join(fichier.replace("\\","/").split("/")[:-1])
	if path != "": path += "/"

	fusioned = file(fichier,"rb")
	fusioned.read(1)
	erreur = 0
	if new_path: dossier = new_path
	else: dossier = try_name(".".join(fichier.replace("\\","/").split(".")[:-1]))
	print dossier
	try: mkdir(dossier)
	except: pass

	if erreur <= 100:
		string = fusioned.readline()
		read = -1

		while string != "":
			if read == -1:
				if string == "\n":
					fichier = file(name,"ab")
					fichier.write("\n")
					fichier.close()
					string = fusioned.readline()

				if string == "" : break
				else:
					name = try_file(dossier+"/"+string[:-1])
					print "\t",name
					fichier = file(name,"wb")

			elif read == -2: read = base_int(string[:-1], 254)
			elif read : fichier.write(string)
			else:
				fichier.write(string[:-1])
				fichier.close()

			string = fusioned.readline()
			read -= 1
		fusioned.close()
	else:
		dossier = None
	return dossier
Beispiel #12
0
def voir_files(fichier, start=-1, stop=-1, current=0):
    fusioned = file(fichier, "rb")

    if start != stop:
        start, stop = void_read(fusioned, start - current, stop)
        start += current
    else:
        fusioned.read(1)
    string = fusioned.readline()
    files = []
    ligne = 0
    read = -1

    while string != "":
        if read == -1:
            if string == "\n":
                string = fusioned.readline()
                files[-1] = ligne
                ligne += 1

            if string == "": break
            else:
                name = string[:-1]
                if files != []:
                    files[-1] = ligne
                    yield files
                files = [name, ligne + 2, ligne]

        elif read == -2:
            read = base_int(string[:-1], 254)

        string = fusioned.readline()
        read -= 1
        ligne += 1
        if start > -1 < stop <= ligne: break
    fusioned.close()
Beispiel #13
0
def add_files_in_dir(nom_fuz, noms, start_dir, printer=0):
      #start_dir numero de ligne ou commence le dossier
      fusioned = file(nom_fuz, "rb")
      copy = file(get_path(nom_fuz)+"copy", "wb")
      ligne = 0
      if printer: print "copie du debut du fichier de fusion"
      for i in range(start_dir-3): copy.write(fusioned.readline())
      string = fusioned.readline()[:-1]
      copy.write(int_len(int_base(base_int(string, 254) + len(noms), 254), len(string))+"\n")
      for nom in noms:
            if printer: print nom,"\ncalcule de la taille du fichier"
            ligne = 0
            for i in file(nom, "rb").read_lines(): ligne += 1
            copy.write(get_name(nom)+"\n"+int_base(ligne,254)+"\n")
            if printer: print "copie du fichier"
            for i in file(nom, "rb").read_lines(): copy.write(i)
            copy.write("\n")
      if printer: print "copie de la fin du fichier de fusion"
      for i in fusioned.read_lines(): copy.write(i)
      copy.close()
      remove(nom_fuz)
      rename(get_path(nom_fuz)+"copy", nom_fuz)
      if printer: print "creation de l'index du fichier de fusion"
      create_index_dir(nom_fuz)
Beispiel #14
0
    def slot_extraire_file(__):
        if __.Struct.List_fichier.currentItem():
            __.Status_bar.showMessage("Extraction du fichier en cours")
            filename = unicode(__.Struct.List_fichier.currentItem().text(),
                               "cp1252")

            fichier = file(__.archive_ind, "rb")
            fichier.readline()

            ind_dossier = base_int(fichier.read(__.arborescence[1]))
            nbr_fichiers = base_int(fichier.readline()[:-1])
            index_dir = __.get_index_dir_init()
            while ind_dossier <= index_dir:
                if ind_dossier == index_dir:
                    for j in range(nbr_fichiers):
                        temp = fichier.readline()[:-1]
                        if temp == filename:
                            start = fichier.readline()[:-1]
                            stop = fichier.readline()[:-1]
                            extract_file(__.archive, filename,
                                         base_int(start, 254),
                                         base_int(stop, 254),
                                         unicode(__.Path.text(), "cp1252"))
                            ind_dossier = index_dir + 1
                            break
                        else:
                            fichier.readline()
                            if not fichier.readline():
                                ind_dossier = index_dir + 1
                else:
                    for j in range(nbr_fichiers * 3):
                        if not fichier.readline(): ind_dossier = index_dir + 1
                ind_dossier = base_int(fichier.read(__.arborescence[1]))
                nbr_fichiers = base_int(fichier.readline()[:-1])
                if index_dir:
                    __.Status_progress.setValue(50 +
                                                ind_dossier / index_dir * 50)
                else:
                    __.Status_progress.setValue(100)
                if not nbr_fichiers: break
            __.Status_bar.showMessage("Extraction du fichier terminée")
        else:
            __.Status_bar.showMessage("Aucun fichier sélectionné")
Beispiel #15
0
def defusion_dir(fusioned, new_path=""):
    if new_path:
        if is_file(new_path): path = try_name(new_path)
        else: path = new_path[:]
        try:
            mkdir(path)
        except:
            pass
    else:
        path = "/".join(fusioned.replace("\\", "/").split("/")[:-1])
    if path[-1] != "/": path += "/"
    len_path = len(path)

    fusioned = file(fusioned, "rb")
    fusioned.read(1)
    dirs = []
    len_nbr = base_int(fusioned.read(1))
    nbr_dir = base_int(fusioned.read(len_nbr))
    for i in range(nbr_dir):
        dirs.append(fusioned.readline()[:-1] + "/")
    for i, f in enumerate(dirs):
        if i:
            index = f[:len_nbr]
            dirs[i] = force_encode(dirs[base_int(index)]) + force_encode(
                f[len_nbr:])

        erreur = 0
        temp = try_name(path + decode(dirs[i][:-1]))
        mkdir(temp)
        dirs[i] = temp[len_path:] + "/"
        if erreur > 100: break

    string = fusioned.read(len_nbr)
    c_dir = dirs[base_int(string)]
    nbr_file = base_int(fusioned.readline()[:-1]) + 1
    if erreur <= 100:
        while string != "" and nbr_file:
            print "\n" * 2, "\t", c_dir
            print

            string = fusioned.readline()
            read = -1
            while string != "" and nbr_file:
                if read == -1:
                    if string == "\n":
                        fichier = file(path + c_dir + name, "ab")
                        fichier.write("\n")
                        fichier.close()
                        string = fusioned.readline()

                    if string == "": break
                    else:
                        nbr_file -= 1
                        if not nbr_file: break
                        name = get_name(
                            try_name(path + c_dir + decode(string[:-1])))
                        fichier = file(path + c_dir + name, "wb")
                        print "\t" * 2, name

                elif read == -2:
                    read = base_int(string[:-1], 254)
                elif read:
                    fichier.write(string)
                else:
                    fichier.write(string[:-1])
                    fichier.close()

                string = fusioned.readline()
                read -= 1

            if len(string) > len_nbr: c_dir = dirs[base_int(string[:len_nbr])]
            else:
                string += fusioned.readline()
                c_dir = dirs[base_int(string[:len_nbr])]
            nbr_file = base_int(string[len_nbr:-1], 254) + 1

    fusioned.close()
    return path + dirs[0][:-1]
Beispiel #16
0
 def get_contenu(__, index_dir):
     liste_contenu = []
     fichier = file(__.archive_ind, "rb")
     fichier.read(1)
     nbr_c = base_int(fichier.read(1))
     fichier.read(1)
     arborescence = get_arborescence(file(__.archive, "rb"))
     num_dossier = base_int(fichier.read(nbr_c))
     nbr_fichier = base_int(fichier.readline()[:-1], 254)
     while num_dossier != index_dir:
         for i in range(nbr_fichier * 3):
             fichier.readline()
         num_dossier = base_int(fichier.read(nbr_c))
         nbr_fichier = base_int(fichier.readline()[:-1], 254)
     liste_contenu.append([arborescence[0][num_dossier], []])
     liste_fichier = []
     for i in range(nbr_fichier):
         nom = fichier.readline()[:-1]
         start = base_int(fichier.readline()[:-1], 254)
         stop = base_int(fichier.readline()[:-1], 254)
         liste_contenu[-1][1].append([nom, start, stop])
     dossier = arborescence[0][base_int(
         fichier.read(nbr_c))][:-1].split("/")
     nbr_fichier = base_int(fichier.readline()[:-1], 254)
     lim = len(liste_contenu[0][0])
     path = get_path(__.archive)
     lim_start = len(path)
     index_slash = len(liste_contenu[0][0][:-1].split("/")) - 1
     name = get_name(liste_contenu[0][0][:-1])
     liste_contenu[0][0] = path + name
     lim_end = lim_start + lim
     while dossier[index_slash] == name:
         liste_contenu.append([path + "/".join(dossier[index_slash:]), []])
         for i in range(nbr_fichier):
             nom = fichier.readline()[:-1]
             start = base_int(fichier.readline()[:-1], 254)
             stop = base_int(fichier.readline()[:-1], 254)
             liste_contenu[-1][1].append([nom, start, stop])
         dossier = arborescence[0][base_int(
             fichier.read(nbr_c))][:-1].split("/")
         if len(dossier) <= index_slash: break
         nbr_fichier = base_int(fichier.readline()[:-1], 254)
     return liste_contenu
def defusion_dir(fusioned, new_path=""):
	if new_path:
		if is_file(new_path): path = try_name(new_path)
		else: path = new_path[:]
		try: mkdir(path)
		except: pass
	else: path = "/".join(fusioned.replace("\\","/").split("/")[:-1])
	if path[-1] != "/": path += "/"
	len_path = len(path)

	fusioned = file(fusioned,"rb")
	fusioned.read(1)
	dirs = []
	len_nbr = base_int(fusioned.read(1))
	nbr_dir = base_int(fusioned.read(len_nbr))
	for i in range(nbr_dir) : dirs.append(fusioned.readline()[:-1]+"/")
	for i,f in enumerate(dirs):
		if i:
			index = f[:len_nbr]
			dirs[i] = force_encode(dirs[base_int(index)])+force_encode(f[len_nbr:])

		erreur = 0
		temp = try_name(path+decode(dirs[i][:-1]))
		mkdir(temp)
		dirs[i] = temp[len_path:]+"/"
		if erreur > 100:break

	string = fusioned.read(len_nbr)
	c_dir = dirs[base_int(string)]
	nbr_file = base_int(fusioned.readline()[:-1])+1
	if erreur <= 100:
		while string != "" and nbr_file:
			print "\n"*2,"\t",c_dir
			print

			string = fusioned.readline()
			read = -1
			while string != "" and nbr_file:
				if read == -1:
					if string == "\n":
						fichier = file(path+c_dir+name,"ab")
						fichier.write("\n")
						fichier.close()
						string = fusioned.readline()

					if string == "":break
					else:
						nbr_file -= 1
						if not nbr_file :break
						name = get_name(try_name(path+c_dir+decode(string[:-1])))
						fichier = file(path+c_dir+name,"wb")
						print "\t"*2,name

				elif read == -2 :read = base_int(string[:-1],254)
				elif read : fichier.write(string)
				else:
					fichier.write(string[:-1])
					fichier.close()

				string = fusioned.readline()
				read -= 1

			if len(string) > len_nbr: c_dir = dirs[base_int(string[ : len_nbr])]
			else:
				string += fusioned.readline()
				c_dir = dirs[base_int(string[ : len_nbr])]
			nbr_file = base_int(string[len_nbr : -1], 254)+1

	fusioned.close()
	return path+dirs[0][:-1]
Beispiel #18
0
            ligne += 1
            if start > -1 < stop <= ligne: break
      fusioned.close()


def voir_dir(name_fusioned,start=-1,stop=-1,printer=0):
      fusioned = file(name_fusioned,"rb")
      for el in files_in_dir(fusioned,get_arborescence(fusioned,start,stop),start,stop,printer):yield el

def files_in_dir(fusioned,(dirs,nbr_dir,len_nbr),start=-1,stop=-1,printer=0):
	if -1 < start <= stop:
		if start > stop : start, stop = stop, start
		stop -= start
	else: stop = -1
	string = fusioned.read(len_nbr)
	c_dir = dirs[base_int(string)]
	if printer : print c_dir
	nbr_file = base_int(fusioned.readline()[:-1])+1
	ligne = 1 + nbr_dir
	index = 0
	while string != "" and nbr_file:
		string = fusioned.readline()
		read = -1
		ligne += 1
		files = []
		if printer : print c_dir
		while string != "" and nbr_file:
			if read == -1:
				if string == "\n":
					files[-1][-1] = ligne
					if printer : print ligne
Beispiel #19
0
	def get_contenu(__, index_dir):
		liste_contenu = []
		fichier = file(__.archive_ind, "rb")
		fichier.read(1)
		nbr_c = base_int(fichier.read(1))
		fichier.read(1)
		arborescence = get_arborescence(file(__.archive, "rb"))
		num_dossier = base_int(fichier.read(nbr_c))
		nbr_fichier = base_int(fichier.readline()[:-1], 254)
		while num_dossier != index_dir:
			for i in range(nbr_fichier * 3): fichier.readline()
			num_dossier = base_int(fichier.read(nbr_c))
			nbr_fichier = base_int(fichier.readline()[:-1], 254)
		liste_contenu.append([arborescence[0][num_dossier], []])
		liste_fichier = []
		for i in range(nbr_fichier):
			nom = fichier.readline()[:-1]
			start = base_int(fichier.readline()[:-1], 254)
			stop = base_int(fichier.readline()[:-1], 254)
			liste_contenu[-1][1].append([nom, start, stop])
		dossier = arborescence[0][base_int(fichier.read(nbr_c))][:-1].split("/")
		nbr_fichier = base_int(fichier.readline()[:-1], 254)
		lim = len(liste_contenu[0][0])
		path = get_path(__.archive)
		lim_start = len(path)
		index_slash = len(liste_contenu[0][0][:-1].split("/")) - 1
		name = get_name(liste_contenu[0][0][:-1])
		liste_contenu[0][0] = path + name
		lim_end = lim_start + lim
		while dossier[index_slash] == name:
			liste_contenu.append([path + "/".join(dossier[index_slash:]), []])
			for i in range(nbr_fichier):
				nom = fichier.readline()[:-1]
				start = base_int(fichier.readline()[:-1], 254)
				stop = base_int(fichier.readline()[:-1], 254)
				liste_contenu[-1][1].append([nom, start, stop])
			dossier = arborescence[0][base_int(fichier.read(nbr_c))][:-1].split("/")
			if len(dossier) <= index_slash: break
			nbr_fichier = base_int(fichier.readline()[:-1], 254)
		return liste_contenu
Beispiel #20
0
                           start, stop, printer):
        yield el


def files_in_dir(fusioned,
                 (dirs, nbr_dir, len_nbr),
                 start=-1,
                 stop=-1,
                 printer=0):
    if -1 < start <= stop:
        if start > stop: start, stop = stop, start
        stop -= start
    else:
        stop = -1
    string = fusioned.read(len_nbr)
    c_dir = dirs[base_int(string)]
    if printer: print c_dir
    nbr_file = base_int(fusioned.readline()[:-1]) + 1
    ligne = 1 + nbr_dir
    index = 0
    while string != "" and nbr_file:
        string = fusioned.readline()
        read = -1
        ligne += 1
        files = []
        if printer: print c_dir
        while string != "" and nbr_file:
            if read == -1:
                if string == "\n":
                    files[-1][-1] = ligne
                    if printer: print ligne