fix: correct getXDGDataDirs
Signed-off-by: black-desk <me@black-desk.cn>
This commit is contained in:
		
							
								
								
									
										21
									
								
								src/global.h
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								src/global.h
									
									
									
									
									
								
							@ -306,23 +306,28 @@ inline QString getRelativePathFromAppId(const QString &id)
 | 
				
			|||||||
inline QStringList getXDGDataDirs()
 | 
					inline QStringList getXDGDataDirs()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    const static auto XDGDataDirs = []() {
 | 
					    const static auto XDGDataDirs = []() {
 | 
				
			||||||
        auto env = QString::fromLocal8Bit(qgetenv("XDG_DATA_DIRS")).split(':', Qt::SkipEmptyParts);
 | 
					        auto XDGDataDirs = QString::fromLocal8Bit(qgetenv("XDG_DATA_DIRS")).split(':', Qt::SkipEmptyParts);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (env.isEmpty()) {
 | 
					        if (XDGDataDirs.isEmpty()) {
 | 
				
			||||||
            env.append(QString{qgetenv("HOME")} + QDir::separator() + ".local/share");
 | 
					            XDGDataDirs.append("/usr/local/share");
 | 
				
			||||||
            env.append("/usr/local/share");
 | 
					            XDGDataDirs.append("/usr/share");
 | 
				
			||||||
            env.append("/usr/share");
 | 
					 | 
				
			||||||
            qputenv("XDG_DATA_DIRS", env.join(':').toLocal8Bit());
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        std::for_each(env.begin(), env.end(), [](QString &str) {
 | 
					        auto XDGDataHome = QString::fromLocal8Bit(qgetenv("XDG_DATA_HOME"));
 | 
				
			||||||
 | 
					        if (XDGDataHome.isEmpty()) {
 | 
				
			||||||
 | 
					            XDGDataHome = QString{qgetenv("HOME")} + QDir::separator() + ".local" + QDir::separator() + "share";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        XDGDataDirs.push_front(XDGDataHome);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        std::for_each(XDGDataDirs.begin(), XDGDataDirs.end(), [](QString &str) {
 | 
				
			||||||
            if (!str.endsWith(QDir::separator())) {
 | 
					            if (!str.endsWith(QDir::separator())) {
 | 
				
			||||||
                str.append(QDir::separator());
 | 
					                str.append(QDir::separator());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            str.append("applications");
 | 
					            str.append("applications");
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return env;
 | 
					        return XDGDataDirs;
 | 
				
			||||||
    }();
 | 
					    }();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return XDGDataDirs;
 | 
					    return XDGDataDirs;
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user