u2cli: support long paths on win7
This commit is contained in:
		
							parent
							
								
									7454167f78
								
							
						
					
					
						commit
						b39ff92f34
					
				
							
								
								
									
										34
									
								
								bin/up2k.py
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								bin/up2k.py
									
									
									
									
									
								
							| @ -1,8 +1,8 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| from __future__ import print_function, unicode_literals | from __future__ import print_function, unicode_literals | ||||||
| 
 | 
 | ||||||
| S_VERSION = "1.3" | S_VERSION = "1.4" | ||||||
| S_BUILD_DT = "2023-03-05" | S_BUILD_DT = "2023-03-08" | ||||||
| 
 | 
 | ||||||
| """ | """ | ||||||
| up2k.py: upload to copyparty | up2k.py: upload to copyparty | ||||||
| @ -252,7 +252,13 @@ def eprint(*a, **ka): | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def flushing_print(*a, **ka): | def flushing_print(*a, **ka): | ||||||
|     _print(*a, **ka) |     try: | ||||||
|  |         _print(*a, **ka) | ||||||
|  |     except: | ||||||
|  |         v = " ".join(str(x) for x in a) | ||||||
|  |         v = v.encode("ascii", "replace").decode("ascii") | ||||||
|  |         _print(v, **ka) | ||||||
|  | 
 | ||||||
|     if "flush" not in ka: |     if "flush" not in ka: | ||||||
|         sys.stdout.flush() |         sys.stdout.flush() | ||||||
| 
 | 
 | ||||||
| @ -379,6 +385,23 @@ def walkdir(err, top, seen): | |||||||
| def walkdirs(err, tops): | def walkdirs(err, tops): | ||||||
|     """recursive statdir for a list of tops, yields [top, relpath, stat]""" |     """recursive statdir for a list of tops, yields [top, relpath, stat]""" | ||||||
|     sep = "{0}".format(os.sep).encode("ascii") |     sep = "{0}".format(os.sep).encode("ascii") | ||||||
|  |     if not VT100: | ||||||
|  |         za = [] | ||||||
|  |         for td in tops: | ||||||
|  |             try: | ||||||
|  |                 ap = os.path.abspath(os.path.realpath(td)) | ||||||
|  |                 if td[-1:] in (b"\\", b"/"): | ||||||
|  |                     ap += sep | ||||||
|  |             except: | ||||||
|  |                 # maybe cpython #88013 (ok) | ||||||
|  |                 ap = td | ||||||
|  | 
 | ||||||
|  |             za.append(ap) | ||||||
|  | 
 | ||||||
|  |         za = [x if x.startswith(b"\\\\") else b"\\\\?\\" + x for x in za] | ||||||
|  |         za = [x.replace(b"/", b"\\") for x in za] | ||||||
|  |         tops = za | ||||||
|  | 
 | ||||||
|     for top in tops: |     for top in tops: | ||||||
|         isdir = os.path.isdir(top) |         isdir = os.path.isdir(top) | ||||||
|         if top[-1:] == sep: |         if top[-1:] == sep: | ||||||
| @ -897,6 +920,9 @@ class Ctl(object): | |||||||
|                 self.handshaker_busy += 1 |                 self.handshaker_busy += 1 | ||||||
| 
 | 
 | ||||||
|             upath = file.abs.decode("utf-8", "replace") |             upath = file.abs.decode("utf-8", "replace") | ||||||
|  |             if not VT100: | ||||||
|  |                 upath = upath[4:] | ||||||
|  | 
 | ||||||
|             hs, sprs = handshake(self.ar, file, search) |             hs, sprs = handshake(self.ar, file, search) | ||||||
|             if search: |             if search: | ||||||
|                 if hs: |                 if hs: | ||||||
| @ -1066,7 +1092,7 @@ source file/folder selection uses rsync syntax, meaning that: | |||||||
| 
 | 
 | ||||||
|     ar.files = [ |     ar.files = [ | ||||||
|         os.path.abspath(os.path.realpath(x.encode("utf-8"))) |         os.path.abspath(os.path.realpath(x.encode("utf-8"))) | ||||||
|         + (x[-1:] if x[-1:] == os.sep else "").encode("utf-8") |         + (x[-1:] if x[-1:] in ("\\", "/") else "").encode("utf-8") | ||||||
|         for x in ar.files |         for x in ar.files | ||||||
|     ] |     ] | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -59,6 +59,8 @@ read a b c d _ < <( | |||||||
|     sed -r 's/[^0-9]+//;s/[" )]//g;s/[-,]/ /g;s/$/ 0/' |     sed -r 's/[^0-9]+//;s/[" )]//g;s/[-,]/ /g;s/$/ 0/' | ||||||
| ) | ) | ||||||
| sed -r 's/1,2,3,0/'$a,$b,$c,$d'/;s/1\.2\.3/'$a.$b.$c/ <loader.rc >loader.rc2 | sed -r 's/1,2,3,0/'$a,$b,$c,$d'/;s/1\.2\.3/'$a.$b.$c/ <loader.rc >loader.rc2 | ||||||
|  | [ $m ] && | ||||||
|  |     sed -ri 's/copyparty.exe/copyparty32.exe/' loader.rc2 | ||||||
| 
 | 
 | ||||||
| excl=( | excl=( | ||||||
|     copyparty.broker_mp |     copyparty.broker_mp | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 ed
						ed