001/* 002 * Copyright (C) Photon Vision. 003 * 004 * This program is free software: you can redistribute it and/or modify 005 * it under the terms of the GNU General Public License as published by 006 * the Free Software Foundation, either version 3 of the License, or 007 * (at your option) any later version. 008 * 009 * This program is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU General Public License for more details. 013 * 014 * You should have received a copy of the GNU General Public License 015 * along with this program. If not, see <https://www.gnu.org/licenses/>. 016 */ 017 018package org.photonvision.common.hardware; 019 020import java.io.IOException; 021import org.photonvision.common.util.ShellExec; 022 023@SuppressWarnings("unused") 024public class PlatformUtils { 025 private static final ShellExec shell = new ShellExec(true, false); 026 private static final boolean isRoot = checkForRoot(); 027 028 @SuppressWarnings("StatementWithEmptyBody") 029 private static boolean checkForRoot() { 030 if (Platform.isLinux()) { 031 try { 032 shell.executeBashCommand("id -u"); 033 } catch (IOException e) { 034 e.printStackTrace(); 035 } 036 037 while (!shell.isOutputCompleted()) { 038 // TODO: add timeout 039 } 040 041 if (shell.getExitCode() == 0) { 042 return shell.getOutput().split("\n")[0].equals("0"); 043 } 044 045 } else { 046 return true; 047 } 048 return false; 049 } 050 051 public static boolean isRoot() { 052 return isRoot; 053 } 054}