<?php
/*
* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
*
* Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
function get_contents($field_name,$filestring)
{
# stripos(string,find,start)
# 返回字符串在另一个字符串中第一次出现的位置。
# ------------------------------------------
# | 参数 | 描述 |
# ------------------------------------------
# | string | 必需。规定被搜索的字符串。 |
# | find | 必需。规定要查找的字符。 |
# | start | 可选。规定开始搜索的位置。 |
# ------------------------------------------
# 如果没有找到该字符串,则返回 false。
$pos = stripos($filestring,$field_name."="); if($pos != false)
{
$pos += strlen($field_name."=");
# 找到当前行结束的地方
$newlinepos = stripos($filestring,"\n",$pos);
if($newlinepos == -)
$newlinepos = stripos($filestring,"\r",$pos); # substr(string,start,length)
# ---------------------------------------------------
# | 参数 | 描述 |
# ---------------------------------------------------
# | string | 必需。规定要返回其中一部分的字符串。 |
# | start | 必需。规定在字符串的何处开始。 |
# ---------------------------------------------------
$returnedstring = substr($filestring,$pos,$newlinepos-$pos);
return $returnedstring;
}
return -;
} # 每个app都有一个这样的对应文件
system("find -name '*.desktop' -print > catdesktop.txt"); if(filesize("catdesktop.txt") == )
{
echo "No .desktop files found";
return;
} # 读取文件
$handle = fopen("catdesktop.txt", "rb");
$contents = fread($handle,filesize("catdesktop.txt"));
fclose($handle);
# unlink() 函数删除文件。
# 若成功,则返回 true,失败则返回 false。
unlink('catdesktop.txt'); # 函数把字符串打散为数组。
# explode(separator,string,limit)
# ---------------------------------------------------------------------------------
# | 参数 | 描述 |
# |--------------------------------------------------------------------------------
# | separator | 必需。规定在哪里分割字符串。 |
# |-------------------------------------------------------------------------------|
# | string | 必需。要分割的字符串。 |
# |-------------------------------------------------------------------------------|
# | limit | 可选。规定所返回的数组元素的数目。 |
# | | 可能的值: |
# | | 大于 - 返回包含最多 limit 个元素的数组 |
# | | 小于 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组 |
# | | - 返回包含一个元素的数组 |
# ---------------------------------------------------------------------------------
$contents = explode("\n",$contents); # 这里strlen($contents[$x])>0限制了数据之间不能出现空行
for($x = ;$x<count($contents)&&strlen($contents[$x])>;$x++)
{
# 从这里可以看出catdesktop.txt文件里是一些文件路径的配置
$handle = fopen($contents[$x], "rb");
$dotdesktop = fread($handle,filesize($contents[$x]));
fclose($handle); # 应用名
$top["Name"] = get_contents("Name",$dotdesktop); # 序号
if(get_contents("X-MATRIX-DisplayPriority",$dotdesktop)!=-)
$top["Order"] = get_contents("X-MATRIX-DisplayPriority",$dotdesktop);
else
$top["Order"] = ; # 图标的绝对路径
$icon_path = get_contents("Icon",$dotdesktop);
$webserver_root = "/usr/share/matrix-gui-2.0/";
# 获取Icon的相对路径
$top["Icon"] = substr($icon_path,strlen($webserver_root)); # 类型
$type = strtolower(get_contents("Type",$dotdesktop));
$top["Type"] = $type; # 分类
$category = get_contents("Categories",$dotdesktop);
$category = trim(strtolower($category)); if($type == "directory")
{
$top["Category"] = get_contents("X-MATRIX-CategoryTarget",$dotdesktop); }elseif($type == "application")
{
# 可执行程序的执行命令
$top["Exec"] = get_contents("Exec",$dotdesktop); # 可执行程序的类型
$top["ProgramType"] = get_contents("ProgramType",$dotdesktop); # 连接描述
$top["Description_Link"] = get_contents("X-MATRIX-Description",$dotdesktop); # 锁
$top["Lock"] = get_contents("X-MATRIX-LOCK",$dotdesktop);
} # 非分类放在主菜单中,其他的放在对应的分类中
# 这里采用PHP的动态添加数组成员的方法
if($category == -)
$application["main_menu"]["apps"][] = $top;
else
$application[$category]["apps"][] = $top; # 用来销毁变量的,但很多时候,这个函数只把变量给销毁了,内存中存放的该变量的值
# 仍然没有销毁,也就是没能达到我们想要的释放内存的效果。
unset($top);
} # 主要是完成数字大小的比较
function cmp($a, $b)
{
if($a["Order"] < $b["Order"])
return -;
elseif($a["Order"] == $b["Order"])
return ;
elseif($a["Order"] > $b["Order"])
return ;
} foreach ($application as $key => $value) {
# 使用用户自定义的函数对数组排序,自动的函数名叫cmp,
# 其实就是前面那个数字比较函数
usort($application[$key]["apps"], "cmp");
} # 将php对象编码成json对象,写到json.txt文件里面去
$ourFileName = "json.txt";
# die() 函数输出一条消息,并退出当前脚本。
# 该函数是 exit() 函数的别名。
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
fwrite($ourFileHandle,json_encode($application));
fclose($ourFileHandle);
?>

Texas Instruments matrix-gui-2.0 hacking -- generate.php的更多相关文章

  1. Texas Instruments matrix-gui-2.0 hacking -- index.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  2. Texas Instruments matrix-gui-2.0 hacking -- app_description.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  3. Texas Instruments matrix-gui-2.0 hacking -- submenu.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  4. Texas Instruments matrix-gui-2.0 hacking -- run_script.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  5. Texas Instruments matrix-gui-2.0 hacking -- menubar.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  6. Texas Instruments matrix-gui-2.0 hacking -- execute_command.sh

    #!/bin/sh #Copyright (C) Texas Instruments Incorporated - http://www.ti.com/ # # # Redistribution an ...

  7. 【LeetCode每天一题】Set Matrix Zeroes(设置0矩阵)

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in-place. Exampl ...

  8. Texas Instruments matrix-gui-2.0 hacking -- json.txt

    { "main_menu": { "apps": [ { "Name":"Profiling", ", &qu ...

  9. Texas Instruments matrix-gui-2.0 hacking -- helper_functions.php

    <?php # PHP_SELF: 但前正在执行脚本的文件名,与document root相关 # QUERY_STRING: 查询(query)的字符串 $cachefile = " ...

随机推荐

  1. Windows 2003 server下载

    http://www.downza.cn/soft/182837.html或http://www.imsdn.cn/operating-systems/windows-server-2003/

  2. django模型的继承

    很多时候,我们都不是从‘一穷二白’开始编写模型的,有时候可以从第三方库中继承,有时候可以从以前的代码中继承,甚至现写一个模型用于被其它模型继承.这样做的好处,我就不赘述了,每个学习Django的人都非 ...

  3. shell 特殊变量详解

    $0 获取当前执行脚本的名称,包括路径 [root@centos test]# cat test.sh echo $0 [root@VM_102_244_centos test]# bash test ...

  4. Spring AMQP 源码分析 02 - CachingConnectionFactory

    ### 准备 ## 目标 了解 CachingConnectionFactory 在默认缓存模式下的工作原理   ## 前置知识   <Spring AMQP 源码分析 01 - Impatie ...

  5. 模块commonjs AMD UMD

    commonjs是用在服务器端的,同步的,如nodejs amd, cmd是用在浏览器端的,异步的,如requirejs和seajs 其中,amd先提出,cmd是根据commonjs和amd基础上提出 ...

  6. 雷林鹏分享:Ruby 判断

    Ruby 判断 Ruby 提供了其他现代语言中很常见的条件结构.在这里,我们将解释所有的条件语句和 Ruby 中可用的修饰符. Ruby if...else 语句 语法 if conditional ...

  7. 20170601xlVBA正则表达式提取体检数据

    Public Sub GetFirst() GetDataFromWord "初检" End Sub Public Sub GetDataFromWord(ByVal SheetN ...

  8. 用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式(转)

    做过很多次导出excel了.都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号“2546541656596”,excel会自动变成科学计数法... 弄过好几次都没有解决,最近又要导出excel ...

  9. quartz---的SimpleTrigger

    quartz---的SimpleTrigger package com.imooc.demo.helloQuartz; import java.text.SimpleDateFormat; impor ...

  10. javascript数据结构——栈

    栈是一种高效的数据结构,数据只能在栈顶添加或删除,所以这样操作很快,也很容易实现.栈的使用遍布程序语言实现的方方面面,从表达式求值到处理函数调用.接下来,用JavaScript实现一个栈的数据结构. ...