From ea5a0ae75c47dfbd36556f624dca272f28f84306 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Mon, 21 Mar 2016 18:08:15 +0200 Subject: [PATCH] Improve support for non-Unicode user profiles for Windows OS --- HISTORY.rst | 1 + platformio/util.py | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index ff8eab0a..4b4b0ec6 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -15,6 +15,7 @@ PlatformIO 2.0 * Updated "Teensy Loader CLI" and fixed uploading of large .hex files (`issue #568 `_) * Better handling of used boards when re-initialize/update project +* Improved support for non-Unicode user profiles for Windows OS * Disabled progress bar for download operations when prompts are disabled * Fixed multiple definition errors for ST STM32 development platform and mbed framework diff --git a/platformio/util.py b/platformio/util.py index 7e9afda9..5bbefaa8 100644 --- a/platformio/util.py +++ b/platformio/util.py @@ -20,8 +20,10 @@ import re import subprocess import sys from glob import glob -from os.path import abspath, basename, dirname, expanduser, isdir, isfile, join +from os.path import (abspath, basename, dirname, expanduser, isdir, isfile, + join, splitdrive) from platform import system, uname +from tempfile import TemporaryFile from threading import Thread from platformio import __apiip__, __apiurl__, __version__, exception @@ -161,7 +163,15 @@ def get_home_dir(): ) if not isdir(home_dir): - os.makedirs(home_dir) + try: + os.makedirs(home_dir) + f = TemporaryFile(dir=home_dir) + f.close() + except (OSError, WindowsError): + if "windows" in get_systype(): + home_dir = splitdrive(home_dir)[0] + "\.platformio" + if not isdir(home_dir): + os.makedirs(home_dir) assert isdir(home_dir) return home_dir