Sign In to Follow Application
View All Documents & Correspondence

"Command Line Data Type Discovery And Conversion"

Abstract: Systems and/or methods are presented that may be used to enable operation of a command line having an upstream command and a downstream command where the upstream command may output data of a type that may be unacceptable as input to the downstream command.

Get Free WhatsApp Updates!
Notices, Deadlines & Correspondence

Patent Information

Application #
Filing Date
27 January 2006
Publication Number
33/2007
Publication Type
INA
Invention Field
COMMUNICATION
Status
Email
Parent Application
Patent Number
Legal Status
Grant Date
2022-08-25
Renewal Date

Applicants

MICROSOFT CORPORATION
ONE MICROSOFT WAY,REDOMND, WASHINGTON 98052, U.S.A.

Inventors

1. HITESH RAIGANDHI
ONE MICROSOFT WAY,REDOMND, WASHINGTON 98052, U.S.A.
2. JEFFREY D. JONES
ONE MICROSOFT WAY,REDOMND, WASHINGTON 98052, U.S.A.
3. JEFFREY P. SNOVER
ONE MICROSOFT WAY,REDOMND, WASHINGTON 98052, U.S.A.

Specification

TECHNICAL FIELD
This invention relates to command lines and command-line interfaces.
BACKGROUND
Computer users commonly need to find and use information. Often they may find and use information through a graphical user interface or a command line interface. If a user wants to find a color printer near his office and configure that printer, for example, he may be able to do so through menus, drop-down lists, and the like in a graphical user interface or through entry of command lines in a command line interface.
Assume that the user selects to find and configure a color printer through a graphical user interface. If his company has 127 printers distributed though ten buildings, for instance, a drop down list of available printers may show each of these 127 printers. By reading through properties for each of these listed printers, the user determines that eighteen of these printers can print in color and that one of these eighteen is located hi his building. Armed with the name of this color printer, the user may then choose to configure the printer, such as through a graphical user interface. Once complete, the user can send color print jobs to this printer.
In many situations a command line interface permits a user to find and use information with greater speed, efficiency, or power than a graphical user interface. In the above example, the user studies properties for 127 printers to find the one he wants. That may take considerable time.
Assume instead that the user finds and configures the color printer through a command line interface. A user often has two options in a situation like this. In
the first, he enters a first command line (e.g., "getjprinter"), reads its output, finds the printer he is looking for, and types another command line with the found information as input to the second command (e.g., "Configure-Printer printername"). This has various problems. One is that the user needs to be able to read and understand the output of the first command. This often means that the first command line outputs TEXT-encoded data (which is human readable) with a particular format and that the user has to read through it. It also means that the user has to enter a second command and enter the found information in a format and encoding usable by the second command. In many cases, this first option may also take considerable time.
In the second option, a command line interface, often through its "shell", automates much of the user's actions with script. In this case, a user enters a command line comprising the first and second commands (and a new third command) and other information that, in total, is used to find the printer and configure it. In this case, the command line might read:
$x=get_printer | get_printername 9 color | Configure-Printer $x
Here the user wrote a script which invokes the first command "get_printer" to get information on all the printers. It then parses the output based on which printers are in building number 9 that print in color ("get_printername 9 color"). Once the name of this printer is found, the shell invokes the command "Configure-Printer" with this printer's name, thereby configuring that printer.
While this second option may be powerful and efficient, it also has a problem. Commands are type-specific; they generally accept and output data in a
particular type (e.g., encoded and formatted in XML). If the first command "get_printer" generates TEXT-encoded and formatted data but the "Configure-Printer" command does not accept TEXT-encoded and formatted data exactly, the Configure-Printer command will fail.
To address this problem, many creators of commands for command lines have standardized them to output data and accept input data only when it is TEXT-encoded. But TEXT-encoded data can be difficult to parse and/or parsing it can be prone to error since there is no standard format.
SUMMARY
Systems and/or methods are presented that may be used to enable operation of a command line having an upstream command and a downstream command in which an upstream command outputs data of a type that may be unacceptable as input to the downstream command.
The systems and/or methods may comprise, for example, a command-line data-stream protocol in which output from an upstream command in a command line is received having a tag sufficient to enable a determination of a data type associated with the output. By knowing the data type, the associated data may be converted to a data type that is acceptable as input to a downstream command.
BRIEF DESCRIPTION OF THE DRAWINGS
Fig. 1 illustrates an exemplary architecture in which various embodiments of the tools may operate.
Fig. 2 sets forth a flow diagram of an exemplary process having an exemplary protocol for enabling operation of a command line.
Fig. 3 sets forth a flow diagram of an exemplary process for enabling operation of a command line through determination and direction of an upstream command's datatype.
DETAILED DESCRIPTION
Overview
Systems and/or methods ("tools") are presented that may be used to enable operation of a command line having an upstream command and a downstream command where the upstream command outputs data of a type unacceptable as input to the downstream command.
In an illustrated embodiment, a command-line data-stream protocol receives output from an upstream command in a command line. The received output has a tag that is sufficient to enable the output's data type to be determined. An acceptable data type of a downstream command in the command line into which the output is to be received as input is also determined. If the output's data type is not compatible with the downstream command's data type, the output's data type is converted to a compatible data type for the downstream command.
In another illustrated embodiment, a command-line shell determines types of data that may be output by an upstream command and types of data acceptable as input by a downstream command. If one of the types of data that may be output is acceptable as input to the downstream command, the shell directs the upstream command to output its data with this type. If, on the other hand, the command-line shell determines that none of the types of data that may be output are acceptable as input to the downstream command, the command-line shell may direct the upstream command to output the data with a type convertible to one of the types
of data acceptable as input. The shell may then invoke a conversion command to convert the data type of the output to be one acceptable as input.
In still another illustrated embodiment, output from a command is encoded to comprise a tag. This tag may comprise a preamble to the data output containing information sufficient to enable determination of the output's data type, such as it being structured data like Comma Separated Values (CSV) or extensible Markup Language (XML) having a particular schema.
Exemplary Architecture
Before describing aspects of the tools in detail, the following discussion of an exemplary architecture is provided to assist the reader in understanding where and how various aspects of the tools may be employed. It is to be understood mat the description provided below constitutes but one example and is not intended to limit application of the tools to one particular architecture or environment.
Fig. 1 shows an architecture generally at 100 comprising a computing device 102 and various components within or accessible by the computing device. In this particular example, the computing device comprises one or more processors 104 and computer-readable media 106. The computer-readable media embodies software code that provides a command-line interface 108, a command-line shell 110, commands 112, and converters 114.
A plurality of commands 110 are shown having various potential input and output types. For example, a get printer command 116 is capable of accepting and outputting data of TEXT and CSV types, a configure printer command 118 is capable of accepting and outputting CSV and XML types, and a pause printer command 120 is capable of accepting and outputting ASN.l and XML types.
A plurality of converters 114 are also shown and are capable of converting output of one or more of commands 112 from one data type to another, such as a CSV-to-XML converter 122, an XML-to-CSV converter 124, a TEXT-to-XML converter 126, an ASN.l-to-XML converter 128, and an XML-to-ASN.l converter 130.
As will be described in more detail below, the command-line interface receives a command line entry, such as one entered by a user of the computing device, and performs or otherwise executes associated commands. The command-line shell manages commands in the command line, such as by creating processes for each command within the command line and managing input and output between the processes for these commands.
Enabling Operation of Command Lines
The tools described above and below can enable operation of command lines having an upstream command and a downstream command in which the upstream command may output data of a type unacceptable as input to the downstream command. In some illustrated embodiments described below, the tools do so through an encoding and conversion protocol. The conversion aspect of the protocol may be invoked within the command line itself or externally, such as by the command-line shell. In another illustrated embodiment, the tools enable operation without an encoding and conversion protocol.
These embodiments may be used singly or in combination. Thus, a command line may have a conversion invoked within the command line for one upstream-downstream pair, another conversion invoked by the shell for a second upstream-downstream pair, and input to a downstream command made acceptable
automatically by detecting and directing the upstream command's output for a third upstream-downstream pair.
These various embodiments are described for illustration purposes and are not intended to limit the applicability of the tools.
Encoding and Conversion Protocol; Conversion Externally Invoked
Referring to Figure 2, a process 200 has an exemplary encoding and conversion protocol in which the conversion is externally invoked. The process 200 is illustrated as a series of blocks representing individual operations or acts performed by elements of the computing device, such as command-line interface 108, command-line shell 110, and converters 114. This and other processes described herein may be implemented in connection with any suitable hardware, software, firmware, or combination thereof. In the case of software and firmware, these processes represent sets of operations implemented as computer-executable instructions.
At block 202, a command line is received. This command line may be received from a user of computing device 102, such as from a user who types a command line into command-line interface 108. The command line may comprise multiple commands, such as one or more upstream commands and one or more downstream commands.
In an illustrated embodiment, a command line is received having the following syntax:
$ GET-PRINTER -SystentName PRINTSRV10 I PAUSE-PRINTER
In this example, the command line has an upstream command of "GET-PRINTER" and a downstream command of "PAUSE-PRINTER". These commands are shown in Figure 1 at 116 and 120. This command line requests data for the printer(s) that are accessible by the computing device having the system name of "PRINTSRV10". In addition, this command requests that the printer(s) be paused. To execute this command line, the output of the upstream command (the data for the "PRINTERSRVIO" printers) may, if possible, be piped to the pause printer command as input.
Assume, however, that the default type of output of the get printer command is Comma Separated Values (CSV). Assume also that the pause printer command accepts only ASN.l (Abstract Syntax Notation One) or XML-type (extensible Markup Language-type) input. In this case, the upstream command outputs data having a type that is unacceptable as input to a downstream command.
Assume now that the output of the upstream command ("GET_PRINTER") is as follows:
USA/REDMOND,
WA/40/FLOOR2/2015,\\PRINTSRV10\b40-2015-a,0,3,b40-2015-a,\\PRINTSRV10
USA/REDMOND,
WA/40/FLOOR3/3015,\\PRINTSRV10\b40-3015-b,0,3,b40-3015-b,\\PRINTSRV10
USA/REDMOND,
WA/40/FLOOR4/4015,\\PRINTSRV10\b40-4015-b,0,3,b40-4015-b,\\PRINTSRV10
USA/REDMOND,
WA/40/FLOOR5/5015,\\PRINTSRV10\b40-5015-a,0,3,b40-5015-a,\\PRINTSRV10
USA/REDMOND,
WA/40/FLOOR6/6015,\\PRINTSRV10\b40-6015 -a,0,3/b40-6015-a,\\PRINTSRV10
USA/REDMOND,
WA/44/FLOOR2/2662,\\PRINTSRV10\b44-2662-a,0,3,b44-2662-a,\\PRINTSRV10
Here, the get printer command found six printers with a system name of "PRINTSRV10" and produced this output in CSV format. If this CSV-type data is fed to the downstream pause printer command, the pause printer command will not accept this data, causing the command line to fail. Encoding and conversion protocols illustrated below, however, may be used to enable the operation of the command line even though the pause printer command does not accept CSV formats.
At block 204, the output of the upstream command is encoded with information sufficient to enable determination of the type of the data output, such as it being CSV or XML. This encoding is within the data stream of the output itself, such as with a data stream tag. In one embodiment, the data stream tag
comprises a preamble to the data. This preamble may comprise information indicating the type of data and other information about the data, like a schema governing the data and the like.
With this preamble, the encoded output of the upstream get printer command will instead be as follows:
#< CSV
#ColumnNames:
Location,Name,PrinterState, PrinterStatus,ShareNam e,SystemNaine
#ColumnTypes: String,String,int,int,String,String
#
USA/REDMOND,
WA/40/PLOOR2/2015,\\PRINTSRV10\b40-2015-a,0,3,b40-2015-a,\\PRINTSRV10
USA/REDMOND,
WA/40/FLOOR3/3015,\\PRINTSRV10\b40-3015-b,0,3,b40-3015-b,\\PRINTSRV10
USA/REDMOND,
WA/40/FLOOR4/4015,\\PRINTSRV10\b40-4015-b,0,3,b40-4015-b,\\PRINTSRV10
USA/REDMOND,
WA/40/FLOOR5/5015,\\PRINTSRV10\b40-5015-a,0,3,b40-5015-a,\\PRINTSRV10
USA/REDMOND,
WA/40/FLOOR6/6015,\\PRINTSRV10\b40-6015-a,0,3,b40-6015-a,\\PRINTSRV10
USA/REDMOND,
WA/44/FLOOR2/2662,\\PRINTSRV10\b44-2662-a,0,3,b44-2662-a,\\PRINTSRV10
This encoding may be performed in various ways. In one case, the upstream command is built or altered such that it automatically encodes its output. In another case, the shell receives the output and then encodes that output.
In many cases the command-line shell manages the commands in the command line, such as by breaking the command line into processes for each command and then acting to manage these processes. The shell may, for instance, send the output of each upstream command to a following downstream as input.
For the illustrated embodiment, assume that the output is encoded by the upstream command to comprise the above preamble. This preamble has four lines starting with a number sign ("#"). Each of these lines may comprise information about the data, though it may not necessarily comprise output data itself. The first line of the preamble comprises a number sign followed by a greater-man symbol and a space ("#> "). This three-character syntax indicates to a reader of the output that the next information in this line indicates the data type of the output. Thus, in this illustrated example, the next characters "CSV" indicate that the output is of the comma-separated-value type. The other three lines may also indicate additional information about the data. The second line is:
#ColumnNames:
Location,Name,PrinterState,PrinterStatus,ShareNam e,SystemName
This line indicates that the structure of the CSV data is such that the first column is a printer's location, the second a printer's name, the third a printer's state, the fourth a printer's status, the fifth a share name for the printer, and the sixth a system name of the printer. Looking at the first line of output, this is shown with:
USA/REDMOND,
WA/40/FLOOR2/2015,\\PRINTSRV10\b40-2015-a,0,3,b40-2015-a,\\PRINTSRV10
Thus, the location for the first-listed printer, which is in the first column of the first line, is "USA/REDMOND,WA/40/FLOOR2/2Q15". The name is "PRINTSRV10\b40-2015-a". This printer's state is "0", status is "3", and share name is "b40-2015-a". Lastly, this printer's system name is "PRINTSRV10".
The third of the four lines is:
#ColumnTypes: String,String,int,int,String,String
This line indicates that the character types in the columns are strings or integers. This can be useful when determining how to handle this data and is another example of information about the output of the upstream command. Looking at the first line of output, this is shown with:
USA/REDMOND,
WA/40/FLOOR2/2015,\\PRINTSRV10\b40-2015-a, 0,3,b40-2015-a,\\PRINTSRV10
The columns have characters that are, as indicated in the preamble, filled with strings, strings, integer(s), integer(s), strings, and strings for columns one through six, respectively.
The fourth line is blank following a number sign, though it may contain additional information in some embodiments. The fifth line is blank and does not have a number sign character to start. This indicates that the next line is data, rather than information about that data.
At block 206 the method determines the data type of the encoded data. In some embodiments, the downstream command receiving the data and/or the shell
may determine the data type of the encoded data, such as its encoding schema, for instance. Here the type of data is determined by reading the first line of the preamble of the encoded data. This line indicates that the data's data type is CSV. Other information may also be read to determine additional information about the output, here what information is in each column and the types of characters in those columns.
Continuing the illustrated embodiment, the downstream command and/or the shell are now aware of the data type of the data intended to be sent to the downstream command as input.
At block 208, acceptable data type(s) of the downstream command are determined. In some cases this is done intrinsically, such as when the downstream command receives the data from the upstream command and compares the data type of that data with what it accepts. The shell may also determine this, such as by comparing the downstream command with a database listing acceptable types of input to commands.
If the data type of the upstream command's output is acceptable to the downstream command, the downstream command receives the data and executes at block 212. This is shown with the "Yes" path following decision block 210 to block 212. If the data type is not acceptable to the downstream command, the shell or downstream command proceeds along the "No" path to block 214 or, in some cases, skips block 214 and proceeds to block 216.
In one embodiment, the shell may determine if a converter is available at block 216 that can convert the upstream data's data type to one accessible by the downstream command and invoke that converter at block 218, thereby skipping from block 210 to block 216. Alternatively, if a converter is not available, it can
produce an error message at block 220. When invoking the converter the shell may pass the output of the upstream command to the converter as input and take the output of the converter and pass it to the downstream command.
The converters may also be invokable with names or indicators buildable by the downstream command. The downstream command may, for instance, take the name of a data type in the preamble, such as "CSV", and build a command to invoke a converter with this data type name and a name for a type acceptable to it.
In the illustrated embodiment, the downstream command has determined that the upstream command's data is output in CSV. It also knows that it can accept ASN.l or XML. Thus, it may build a command at block 214 of either:
$ CONVERT CSV TO XML
$ CONVERT CSV TO ASN.l
It may follow a particular convention for building this converter's name so that the converters having these names match up. In this case the convention is to start with "CONVERT", follow that with a space " ", men the name of the type to be converted "CSV", follow that with a space " ", then a "TO", then a space " ", and then the name of the type desired "XML" or "ANS. 1".
The downstream command or the shell may determine that either of these converters are available at block 216. If one of them is available the downstream command proceeds along the "Yes" path to block 218 to invoke the converter as mentioned above. If neither are available the downstream command or shell proceeds along the "No" path to block 220.
Continuing the illustrated embodiment, the shell or downstream command determines that CSV-to-XML converter 122 of Figure 1 is available. The converter is then invoked at block 218. Its output of converted data is sent to the downstream command (pause printer command 120 of Figure 1).
In some cases the information in the encoded portion of the upstream command's output may be useful to accurately and/or efficiently convert the output. The preamble, as set forth above, may comprise this additional information. The converter may use this information to convert the data into a form acceptable to the next downstream command. When converting data from CSV to XML, for instance, it may be useful to know what data is where and the format of the characters therein. If the XML output is to be arranged by each printer's location, name, state, status, share name, and system name, for instance, the encoded information may be used to arrange the data from the upstream command to fit a particular structure.
The information may also be useful as an aid to parsing the output to locate parts of the upstream command's output, especially in those cases where only a part of the output data is to be passed to the downstream command. In such cases the additional encoded information may enable a more efficient and/or accurate parse of the upstream command's output.
In the ongoing illustration, the upstream command outputs six printers having a system name of "PRINTSRV10". If the downstream command is to receive the share name for the printer, the information in lines two and three of the preamble may be used to more easily find that share name. The second and third lines of the upstream command's encoded output are:
#ColunmNames:
Location,Name,PrinterState, PrinterStatus,ShareNam e,SystemName
#ColumnTypes: String,String,int,int,String,String
The converter may then, based on this encoding, determine that the fifth column comprises the desired share name and that the characters of that column will be a string.
If operation of the command line is complete, as is the case in the illustrated embodiment, the process ends. If the downstream command's output is to be used by another, further-downstream command, the process may repeat, or process 300 may be followed.
Returning to process 200, in cases where no converter is available, the downstream command (with or without the command-line interface or command-line shell) produces an error message at block 220 indicating that a converter is needed to complete the command line entered by the user. This message may, in some cases, indicate a place on the internet where the converter may be downloaded.
Encoding and Conversion Protocol; Conversion Internally Invoked
In some instances a user may wish to invoice a converter within the
command line itself. By so doing some of the acts of process 200 may be skipped. In one embodiment, a command line is received with the following syntax:
$ GET -PRINTER -SystemName PRINTSRV10 OutputFormat CSV | CONVERT -CSV-TO-XML | PAUSE -PRINTER
Here the output of the upstream command is CSV, though in this case the user requested that the output be in CSV. The command downstream of the upstream command is "CONVERT-CSV-TO-XML", which is shown in Figure 1 at 122.
In this process the user chooses the converter, and so likely knows that the final downstream command (pause printer 120) accepts XML data. Here the shell operates to pass the output of the upstream command in CSV to the converter 122 as input in CSV. The shell may men pass the output of the downstream converter to the pause printer command 120 as input in XML.
As before, the information in the encoded portion of the upstream command's data stream may be useful to the converter in converting the output. In this and other cases, a sometimes difficult and often error-prone parsing of TEXT-formatted output may be avoided by choosing to output data in a structured format (like CSV).

Enabling Command Line Operation Automatically Through Detection/Direction
Process 300 enables operation of a command line having an upstream command and a downstream command. It may enable the command line's operation through automatic detection and direction of a data type capable of being output by the upstream command that is acceptable to the downstream command. This may be performed, in some cases, without encoding the upstream command's output. The process 300 is illustrated as a series of blocks representing individual operations or acts performed by elements of the computing device, such as command-line shell 110 and converters 114.
At block 302, the process receives a command line. This command line may be received from a user and may be similarly structured to that described as part of block 202 of Figure 2.
At block 304, command-line shell 110 determines types of data that may be output by an upstream command. In an illustrated embodiment the command line received is:
$ GET -PRINTER -SystemName PRINTSRV10 | CONFIGURE-PRINTER
Get printer command 116, as set forth in the description related to Figure 1, is capable of accepting and outputting data in TEXT and CSV types. The command-line shell determines this at block 304.
At block 306, the shell determines the input data types acceptable to the downstream command. Continuing the illustrated embodiment, the shell determines that configure printer command 118 is capable of accepting and outputting CSV and XML data types.
At block 308, the shell determines if any of the output types of the upstream command are a type acceptable as input to the downstream command. If so, the shell follows the "Yes" path to block 310. If not, the shell follows the "No" path to block 312.
At block 310, the shell directs the upstream command to output data in a format readable by the downstream command. By so doing, the shell may automatically enable operation of a command line where the output of an upstream command may not be readable by a downstream command. If the upstream command of get printer outputs TEXT-formatted data by default, for instance, the shell will have enabled operation of the command line where it otherwise may have failed.
In the illustrated embodiment, the shell alters the command line from the one received to instead be:
$ GET -PRINTER -SystetnName PRINTSRV10 OutputFormat CSV | CONFIGURE-PRINTER
At block 312, the shell directs the upstream command to output data in a format convertible to a format readable by the downstream command. Assume that the command line received at block 302 is instead:
$ GET -PRINTER -SystemName PRINTSRV10 PAUSE-PRINTER
Returning to blocks 304, 306, and 308, the shell in this embodiment determines that none of the upstream command's outputs may be of a data type acceptable to the downstream command. As set forth above, get printer command
116 is capable of outputting data in TEXT or CSV format and pause printer command 120 is capable of accepting data in ASN.l or XML format.
At block 312 then, the shell directs the upstream command to output data in a format convertible to a format readable by the downstream command. Based on the availability of converter CSV-to-XML 122 shown in Figure 1, the shell directs the upstream command to output data in CSV.
The shell invokes the appropriate converter at block 314. Continuing the illustrated embodiment, the shell invokes the CSV-to-XML converter to convert the CSV output to XML. The shell (or another application) may do so without altering the command line or may instead alter the command line, such by changing it to:
$ GET -PRINTER -SystemName PRINTSRV10 OutputForrnat CSV | CONVERT -CSV-TO-XML | PAUSE -PRINTER
In an alternative embodiment, the output of the upstream command is encoded to enable the CSV-to-XML conversion to operate with a potentially higher degree of accuracy and/or the output to more easily or accurately be parsed. This encoding may be performed in any of the manners described above.
At block 316, the downstream command is executed. In the illustrated embodiments, the printer is found and paused or found and configured.
The acts of process 200 or 300 or their alternatives may be performed multiple times. Assume that a command line is received having the following commands:
Here the commands are A, B, C, D, and E. Command A is upstream to command B, B is upstream to C, and so forth. The tools may enable operation of the command line, such as a desired result of executing command E with the preceding data generated from A through D. The tools may do so even in a situation where: A defaults an output type not acceptable to B but where the tools direct A to output the data in a type that is acceptable to B; B outputs a type convertible to a type acceptable to C where the tools invoice an encoding of the output of B and convert that output and send it to C; C outputs by default a type readable by D; and D outputs a type to E that is convertible to a type readable by E but where no encoding of the output of D is performed. This example is given to show the flexibility of the tools. The number and complexity of the commands in a command line may be nearly arbitrary and the command line may still operate using the tools set forth herein.
Conclusion
The systems and/or methods described above may be used to enable operation of a command line having an upstream command and a downstream command where the upstream command outputs data of a type unacceptable as input to the downstream command. These systems and/or methods may do so through an encoding and conversion protocol or through a process whereby data types output from the upstream command are automatically detected and directed to be of a type acceptable to the downstream command.
Although the invention has been described in language specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or
steps described. Rather, the specific features and steps are disclosed as preferred forms of implementing the claimed invention.

CLAIMS
1. One or more computer-readable media having computer-readable
instructions therein that, when executed by a computing device, cause the
computing device to perform acts comprising:
receiving, from an upstream command in a command line, data having a data type that may or may not be acceptable to a downstream command in the command line;
determining whether the data type is acceptable to the downstream command; and
in an event that the data type is not acceptable to the downstream command, processing the data to convert the data into a data type that is acceptable to the downstream command.
2. The media of claim 1, wherein the act of processing the data is
performed without parsing TEXT-formatted data.
p
3. The media of claim 1, further comprising:
encoding the data from the upstream command with a tag sufficient to enable determination of the data's data type, and
wherein the act of determining whether the data type is acceptable comprises determining the data's data type using the tag.The media of claim 1, further comprising encoding the data from the
upstream command to provide an indicator to indicate the data type of the data.
4. The media of claim 4, wherein the act of encoding the data from the
upstream command further comprises a syntax within quotation marks of: "#< "
that precede the indicator.
5. The media of claim 1, further comprising:
receiving, from a second upstream command in the command line, second data having a second data type that may or may not be acceptable to a second downstream command in the command line;
determining whether the second data type is acceptable to the second downstream command; and
in an event that the second data type is not acceptable to the second downstream command, processing the second data to convert the second data into a data type that is acceptable to the second downstream command.
7. The media of claim 1, wherein the act of processing the data is
initiated by the downstream command invoking a converter.
8. The media of claim 7, wherein the act of invoking the converter
comprises building a converter name for the converter, the converter name built
with a data type name encoded in the data from the upstream command and an
acceptable data type name for the data type that is acceptable to the downstream
command.
9. A method comprising:
receiving data in a data stream, the data stream having a tag sufficient to enable a determination of the data's data type;
determining, using the tag, the data's data type;
determining another data type that is acceptable as input to a command; and
converting the data in the data stream from the data's data type to the other data type that is acceptable as input to the command.
10. The method of claim 9, wherein the command is downstream to an
upstream command of the command line, and the act of receiving data in the data
stream comprises receiving the data from the upstream command.
11. The method of claim 9, wherein the tag is encoded into the data
stream by a command-line shell.
12. The method of claim 9, wherein the act of determing the data's
data type is performed by the command.
13. The method of claim 9, wherein the act of determining the other
data type acceptable as input to the command is performed by a command-line
shell.
14. The method of claim 9, wherein the act of converting the data
comprises:
invoking a converter capable of converting the data's data type to the other data type determined to be acceptable as input to the command.
15. The method of claim 9, wherein the tag comprises a preamble to the
data having four or more lines, the first line beginning with a syntax within
quotation marks of: "#< ".
16. The method of claim 9, wherein the tag comprises information
indicating, in addition to the data's data type, a schema La which the data in the
data stream is formatted.
17. The method of claim 9, further comprising performing the acts again
for another data stream and another command in the same command line.
18. One or more computer-readable media having computer-readable
instructions therein that, when executed by a computing device, cause the
computing device to perform acts comprising:
detecting one or more data types capable of being output by an upstream command in a command line;
detecting one or more data types acceptable as input to a downstream command of the command line; and
if one of the one or more data types capable of being output is one that is acceptable as input to the downstream command, directing the upstream command to output data of that data, type.
19. The media of claim 18, further comprising, if none of data types
capable of being output are acceptable as input to the downstream command:
i.
invoking a converter to convert data output by the upstream command from one of the one or more data types capable of being output by the upstream command to that of one of the one or more data types that is acceptable as input.
20. The media of claim 18, wherein the acts of detecting the one or
more data types capable of being output and directing the upstream command are
performed by a command-line shell.

Documents

Orders

Section Controller Decision Date

Application Documents

# Name Date
1 222-del-2006-Form-18-(02-03-2009).pdf 2009-03-02
1 222-DEL-2006-FORM-27 [27-09-2024(online)].pdf 2024-09-27
2 222-del-2006-Correspondence-others-(02-03-2009).pdf 2009-03-02
2 222-DEL-2006-IntimationOfGrant25-08-2022.pdf 2022-08-25
3 222-DEL-2006-PatentCertificate25-08-2022.pdf 2022-08-25
3 222-del-2006-GPA-(18-06-2010).pdf 2010-06-18
4 222-del-2006-Form-13-(18-06-2010).pdf 2010-06-18
4 222-DEL-2006-FORM 3 [03-10-2019(online)].pdf 2019-10-03
5 222-DEL-2006-Written submissions and relevant documents (MANDATORY) [03-10-2019(online)].pdf 2019-10-03
5 222-del-2006-Correspondence-others-(18-06-2010).pdf 2010-06-18
6 222-DEL-2006-HearingNoticeLetter17-09-2019.pdf 2019-09-17
6 222-DEL-2006-Form-1-(28-12-2010).pdf 2010-12-28
7 222-DEL-2006-Correspondence-Others-(28-12-2010).pdf 2010-12-28
7 222-DEL-2006-Correspondence to notify the Controller (Mandatory) [10-09-2019(online)].pdf 2019-09-10
8 222-DEL-2006-Response to office action (Mandatory) [02-04-2019(online)].pdf 2019-04-02
8 222-del-2006-gpa.pdf 2011-08-21
9 222-DEL-2006-Correspondence to notify the Controller (Mandatory) [29-03-2019(online)].pdf 2019-03-29
9 222-del-2006-form-5.pdf 2011-08-21
10 222-del-2006-form-3.pdf 2011-08-21
10 222-DEL-2006-HearingNoticeLetter.pdf 2019-03-15
11 222-del-2006-form-2.pdf 2011-08-21
11 222-DEL-2006_EXAMREPORT.pdf 2016-06-30
12 222-del-2006-form-1.pdf 2011-08-21
12 Abstract [04-11-2015(online)].pdf 2015-11-04
13 222-del-2006-drawings.pdf 2011-08-21
13 Claims [04-11-2015(online)].pdf 2015-11-04
14 222-del-2006-description (complete).pdf 2011-08-21
14 Correspondence [04-11-2015(online)].pdf 2015-11-04
15 222-del-2006-correspondence-others.pdf 2011-08-21
15 Description(Complete) [04-11-2015(online)].pdf 2015-11-04
16 222-del-2006-claims.pdf 2011-08-21
16 Examination Report Reply Recieved [04-11-2015(online)].pdf 2015-11-04
17 OTHERS [04-11-2015(online)].pdf 2015-11-04
17 222-del-2006-abstract.pdf 2011-08-21
18 details under sec 8.pdf 2015-06-24
18 MTL-GPOA - MLK1.pdf ONLINE 2015-03-05
19 MS to MTL Assignment.pdf ONLINE 2015-03-05
19 new covering letter.pdf 2015-06-24
20 FORM-6-701-800(MLK).83.pdf ONLINE 2015-03-05
20 new covering letter.pdf_4737.pdf 2015-06-24
21 FORM-6-701-800(MLK).83.pdf 2015-03-13
21 MTL-GPOA - MLK1.pdf 2015-03-13
22 MS to MTL Assignment.pdf 2015-03-13
23 FORM-6-701-800(MLK).83.pdf 2015-03-13
23 MTL-GPOA - MLK1.pdf 2015-03-13
24 new covering letter.pdf_4737.pdf 2015-06-24
24 FORM-6-701-800(MLK).83.pdf ONLINE 2015-03-05
25 new covering letter.pdf 2015-06-24
25 MS to MTL Assignment.pdf ONLINE 2015-03-05
26 details under sec 8.pdf 2015-06-24
26 MTL-GPOA - MLK1.pdf ONLINE 2015-03-05
27 222-del-2006-abstract.pdf 2011-08-21
27 OTHERS [04-11-2015(online)].pdf 2015-11-04
28 222-del-2006-claims.pdf 2011-08-21
28 Examination Report Reply Recieved [04-11-2015(online)].pdf 2015-11-04
29 222-del-2006-correspondence-others.pdf 2011-08-21
29 Description(Complete) [04-11-2015(online)].pdf 2015-11-04
30 222-del-2006-description (complete).pdf 2011-08-21
30 Correspondence [04-11-2015(online)].pdf 2015-11-04
31 222-del-2006-drawings.pdf 2011-08-21
31 Claims [04-11-2015(online)].pdf 2015-11-04
32 222-del-2006-form-1.pdf 2011-08-21
32 Abstract [04-11-2015(online)].pdf 2015-11-04
33 222-del-2006-form-2.pdf 2011-08-21
33 222-DEL-2006_EXAMREPORT.pdf 2016-06-30
34 222-del-2006-form-3.pdf 2011-08-21
34 222-DEL-2006-HearingNoticeLetter.pdf 2019-03-15
35 222-DEL-2006-Correspondence to notify the Controller (Mandatory) [29-03-2019(online)].pdf 2019-03-29
35 222-del-2006-form-5.pdf 2011-08-21
36 222-DEL-2006-Response to office action (Mandatory) [02-04-2019(online)].pdf 2019-04-02
36 222-del-2006-gpa.pdf 2011-08-21
37 222-DEL-2006-Correspondence-Others-(28-12-2010).pdf 2010-12-28
37 222-DEL-2006-Correspondence to notify the Controller (Mandatory) [10-09-2019(online)].pdf 2019-09-10
38 222-DEL-2006-HearingNoticeLetter17-09-2019.pdf 2019-09-17
38 222-DEL-2006-Form-1-(28-12-2010).pdf 2010-12-28
39 222-DEL-2006-Written submissions and relevant documents (MANDATORY) [03-10-2019(online)].pdf 2019-10-03
39 222-del-2006-Correspondence-others-(18-06-2010).pdf 2010-06-18
40 222-del-2006-Form-13-(18-06-2010).pdf 2010-06-18
40 222-DEL-2006-FORM 3 [03-10-2019(online)].pdf 2019-10-03
41 222-DEL-2006-PatentCertificate25-08-2022.pdf 2022-08-25
41 222-del-2006-GPA-(18-06-2010).pdf 2010-06-18
42 222-del-2006-Correspondence-others-(02-03-2009).pdf 2009-03-02
42 222-DEL-2006-IntimationOfGrant25-08-2022.pdf 2022-08-25
43 222-del-2006-Form-18-(02-03-2009).pdf 2009-03-02
43 222-DEL-2006-FORM-27 [27-09-2024(online)].pdf 2024-09-27

ERegister / Renewals

3rd: 20 Oct 2022

From 27/01/2008 - To 27/01/2009

4th: 20 Oct 2022

From 27/01/2009 - To 27/01/2010

5th: 20 Oct 2022

From 27/01/2010 - To 27/01/2011

6th: 20 Oct 2022

From 27/01/2011 - To 27/01/2012

7th: 20 Oct 2022

From 27/01/2012 - To 27/01/2013

8th: 20 Oct 2022

From 27/01/2013 - To 27/01/2014

9th: 20 Oct 2022

From 27/01/2014 - To 27/01/2015

10th: 20 Oct 2022

From 27/01/2015 - To 27/01/2016

11th: 20 Oct 2022

From 27/01/2016 - To 27/01/2017

12th: 20 Oct 2022

From 27/01/2017 - To 27/01/2018

13th: 20 Oct 2022

From 27/01/2018 - To 27/01/2019

14th: 20 Oct 2022

From 27/01/2019 - To 27/01/2020

15th: 20 Oct 2022

From 27/01/2020 - To 27/01/2021

16th: 20 Oct 2022

From 27/01/2021 - To 27/01/2022

17th: 20 Oct 2022

From 27/01/2022 - To 27/01/2023

18th: 20 Oct 2022

From 27/01/2023 - To 27/01/2024