{"id":3248,"date":"2019-08-21T16:00:10","date_gmt":"2019-08-21T20:00:10","guid":{"rendered":"http:\/\/linguagemprisma.br4.biz\/blog\/?p=3248"},"modified":"2019-08-21T16:37:57","modified_gmt":"2019-08-21T20:37:57","slug":"pmicrotar-biblioteca-para-arquivos-tar","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/modo_texto\/pmicrotar-biblioteca-para-arquivos-tar\/","title":{"rendered":"pmicrotar &#8211; biblioteca para arquivos *.tar"},"content":{"rendered":"<p><a href=\"http:\/\/www.mediafire.com\/file\/wre1o0nd81huofv\/pmicrotar.zip\/file\" target=\"_blank\" rel=\"noopener\">BAIXAR pmicrotar-0.4<\/a><\/p>\n<p>Quem \u00e9 do mundo *nix j\u00e1 deve conhecer o formato *.tar, muitas vezes confundido com um tipo de compress\u00e3o de arquivo. Na verdade, trata-se de um formato de empacotamento, apenas une v\u00e1rios arquivos ou, at\u00e9 mesmo, diret\u00f3rios.<\/p>\n<p>O formato TAR pode ser usado em conjunto com bibliotecas de compress\u00e3o de dados dando assim origem a extens\u00f5es como tar.gz, tar.xz ou tar.7z. Isto significa que os dados foram comprimidos e empacotados no formato TAR.<\/p>\n<p>Pensando na import\u00e2ncia de criar e manipular arquivos no formato TAR \u00e9 que fiz uma biblioteca pequena, mas poderosa, baseada no microtar da linguagem C.<\/p>\n<p>Com ela ser\u00e1 poss\u00edvel ler, criar e manipular arquivos *.tar, tanto no Linux quanto Windows. Apenas o empacotamento, ela n\u00e3o faz a compress\u00e3o, para isso veja as bibliotecas de compress\u00e3o em Prisma.<\/p>\n<p>Outro fato importante \u00e9 que esta biblioteca n\u00e3o l\u00ea os arquivos, apenas monta o empacotamento, ficando a cargo do programador carregar os arquivos em string, empacot\u00e1-los e depois gravar em disco.<\/p>\n<h3>Exemplo pmicrotar :<\/h3>\n<pre class=\"lang:default decode:true\">local mtar = inclua'pmicrotar'\r\n\r\n\r\nfuncao leia_arquivobin(n)\r\n  local a,err = es.abra(n,'leiturabin');\r\n  se nao a entao retorne falso, err; fim\r\n  local txt = a:leia('*t');\r\n  a:feche();\r\n  retorne txt;\r\nfim\r\n\r\n  \r\nlocal dado1 = leia_arquivobin('dados\/arq1.txt'); \/\/lemos um arquivo para uma vari\u00e1vel string.\r\n    \r\nlocal tar,err = mtar.abra(\"simples.tar\",'escrita');\/\/abrimos um arquivo tar para escrita (gravar dados nele)\r\n  \r\nse nao tar entao imprima('Erro:',err,'\\nEnter para sair...'); leia(); sis.saia(1) fim \/\/se der erro o programa imprime e sai.\r\n  \r\nmtar.escreva_cabecalho_arquivo(tar,\"dados\/arq1.txt\",#dado1);\/\/criamos um cabe\u00e7alho com o nome do arquivo (diret\u00f3rio completo)\r\n  \/\/note que na fun\u00e7\u00e3o acima \u00e9 necess\u00e1rio passar o tamanho da string dado '#dado1';\r\nmtar.escreva_dado(tar,dado1)\/\/agora podemos gravar os dados.\r\n  \/\/aqui no meio poderia escrever muitos outros arquivos antes de finalizar e fechar.\r\nmtar.finalize(tar);\r\nmtar.feche(tar);  \r\n\r\npoe('Processo terminado, verifique o arquivo \"simples.tar\", ENTER para sair...');\r\nleia();\r\n<\/pre>\n<p>Para mais exemplos, veja a pasta exemplo ap\u00f3s fazer o download da biblioteca pmicrotar.<\/p>\n<p>&nbsp;<\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #3333ff;\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: xx-large;\"><b>Manual de refer\u00eancia da biblioteca pmicrotar-0.4<\/b><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Esta biblioteca \u00e9 um binding do microtar em C <a href=\"https:\/\/github.com\/rxi\/microtar\">https:\/\/github.com\/rxi\/microtar<\/a><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Licen\u00e7a: MIT \u2013 permite ser usada e modificada ou mesmo vendida sem custos (mesma licen\u00e7a do microtar em C). O autor n\u00e3o poder\u00e1 ser responsabilizado pelo seu uso.<\/span><\/span><\/p>\n<table width=\"100%\" cellspacing=\"0\" cellpadding=\"4\">\n<colgroup>\n<col width=\"256*\" \/> <\/colgroup>\n<tbody>\n<tr>\n<td valign=\"TOP\" width=\"100%\">\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">O que \u00e9 pmicrotar?<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">\u00c9 uma biblioteca Prisma feita em C com fun\u00e7\u00f5es b\u00e1sicas para arquivamento no formato *.tar.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Este formato n\u00e3o compacta, apenas une os arquivos. No entanto, normalmente \u00e9 usado em conjunto<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">com uma outra lib que tenha fun\u00e7\u00e3o de compacta\u00e7\u00e3o originando arquivos tar.gz, tar.xz etc.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Em prisma temos algumas libs que podem ser usadas com esta: <\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">uma lzw escrita em puro Prisma e uma lz4 escrita em C: (Est\u00e1 junto com instalador prisma-1.0.101 ou superior.)<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/prisma\/conjunto-de-ferramentas-arq-arquivamento\/\">https:\/\/linguagemprisma.br4.biz\/blog\/prisma\/conjunto-de-ferramentas-arq-arquivamento\/<\/a><\/span><\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><i>Este \u00e9 um manual de refer\u00eancia, para detalhes de uso veja a pasta exemplos!<\/i><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Para importar o m\u00f3dulo use: <span style=\"color: #3333ff;\">local mtar = inclua&#8217;pmicrotar&#8217;; <\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Fun\u00e7\u00f5es:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #3333ff;\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: large;\"><b>1 \u2013 local tar, err = mtar.abra(arq,modo);<\/b><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #000000;\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Abre um arquivo tar para leitura ou escrita.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #000000;\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>Par\u00e2metros:<\/b><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #000000;\"> <span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>arq<\/b> &#8211; (string) nome do arquivo. (ex.: &#8216;teste.tar&#8217;);<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #000000;\"> <span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>modo<\/b> \u2013 (string) modo de abertura de arquivo: <span style=\"color: #3333ff;\">&#8216;leitura&#8217; \/ &#8216;escrita&#8217; \/ &#8216;adicao&#8217;<\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #000000;\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>retornos:<\/b><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #000000;\"> <span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar<\/b> \u2013 objeto tar criado ou nulo em caso de erro<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #000000;\"> <span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err<\/b> \u2013 (n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #3333ff;\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: large;\"><b>2 \u2013 local ret, err = mtar.escreva_cabecalho(tar, cab);<\/b><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Escreve um cabe\u00e7alho no arquivo *.tar<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar <\/b> &#8211; objeto tar criado previamente.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>cab<\/b> \u2013 uma tabela com campos de cabe\u00e7alho. Esta tabela cont\u00e9m os campos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">cab.modo= numero em octal (ex.: 664 , 775) permiss\u00e3o, use em Linux<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">cab.dono = numero (ex.: 0) id do propriet\u00e1rio.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">cab.tamanho = numero tamanho do arquivo.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">cab.tempo_modif = numero \u2013 tempo da \u00faltima modifica\u00e7\u00e3o. (Veja a fun\u00e7\u00e3o igdir.atritbutos da lib igdir)<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">cab.tipo = numero \u2013 tipo de arquivo ou diret\u00f3rio. Tipos suportados:<\/span><\/span><\/p>\n<table width=\"100%\" cellspacing=\"0\" cellpadding=\"4\">\n<colgroup>\n<col width=\"256*\" \/> <\/colgroup>\n<tbody>\n<tr>\n<td valign=\"TOP\" width=\"100%\">\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">&#8216;0&#8217; = Regular \u2013 arquivo.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">&#8216;1&#8217; = HardLink<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">&#8216;2&#8217; = Link simb\u00f3lico<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">&#8216;3&#8217; = Caractere especial<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">&#8216;4&#8217; = Bloco especial<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">&#8216;5&#8217; = Diret\u00f3rio (pasta)<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">&#8216;6&#8217; = FIFO<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">&#8216;7&#8217; = Arquivo cont\u00edguo em disco.<\/span><\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Como \u00e9 um n\u00famero da tabela ASCII devemos usar a fun\u00e7\u00e3o cod(). Ou se preferir existe uma s\u00e9rie de constantes de tipo predefinidas:<\/span><\/span><\/p>\n<table width=\"100%\" cellspacing=\"0\" cellpadding=\"4\">\n<colgroup>\n<col width=\"256*\" \/> <\/colgroup>\n<tbody>\n<tr>\n<td valign=\"TOP\" width=\"100%\">\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.TIPO_REGULAR; mtar.TIPO_HARDLINK; mtar.TIPO_SYMLINK; mtar.TIPO_CAR; mtar.TIPO_BLOCO; mtar.TIPO_DIRETORIO; mtar.TIPO_FIFO; mtar.CONTIGUO;<\/span><\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">cab.nome = &#8216;nome do arquivo&#8217;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">cab.nomelink = &#8216;nome do link&#8217;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>Retornos:<\/b><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>ret \u2013 verdadeiro ou falso em caso de erro<\/b><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err<\/b> \u2013 <span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #3333ff;\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: large;\"><b>3 \u2013 local ret, err = mtar.escreva_cabecalho_arquivo(tar,nome,tam);<\/b><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Grava um cabe\u00e7alho espec\u00edfico de arquivo.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>Par\u00e2metros:<\/b><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar <\/b>\u2013 objeto tar criado previamente.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>nome<\/b> &#8211; nome do arquivo a ser inserido. (ex.: &#8216;arq1.txt&#8217;);<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tam<\/b> \u2013 tamanho do arquivo a ser inserido; (use a fun\u00e7\u00e3o sis.tamanho para obter o tamanho);<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>Retornos:<\/b><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>ret \u2013 <\/b>verdadeiro ou falso em caso de erro<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err<\/b> \u2013 <span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: large;\"><b><span style=\"color: #3333ff;\">4 \u2013 local ret, err = mtar.escreva_dado(tar,dado);<\/span><\/b><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Escreve o dado bin\u00e1rio no arquivo tar.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">tar \u2013 objeto tar crido previamente.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">dado \u2013 (string) dado a ser gravado, um arquivo lido em modo bin\u00e1rio. Ou qualquer string.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Retornos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>ret \u2013 <\/b>verdadeiro ou falso em caso de erro<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err<\/b> \u2013 <span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #3333ff;\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: large;\"><b>5 \u2013 local ret, err = mtar.finalize(tar);<\/b><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Finaliza o processo de grava\u00e7\u00e3o;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar<\/b> \u2013 objeto tar criado.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Retornos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>ret \u2013 <\/b>verdadeiro ou falso em caso de erro<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err<\/b> \u2013 <span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #3333ff;\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: large;\"><b>6 \u2013 local ret, err = mtar.fecha(tar);<\/b><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Fecha o objeto tar e libera mem\u00f3ria.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar<\/b> \u2013 objeto tar criado.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Retornos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>ret \u2013 <\/b>verdadeiro ou falso em caso de erro<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err<\/b> \u2013 <span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><span style=\"color: #3333ff;\"><span style=\"font-size: large;\"><b>7 \u2013 local tab, err = mtar.leia_cabecalho(tar);<\/b><\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Finaliza o processo de grava\u00e7\u00e3o ou leitura.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar<\/b> \u2013 objeto tar criado.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Retornos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tab \u2013 <\/b>tabela com campos do cabe\u00e7alho ou falso em caso de erro<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err \u2013 <\/b><span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><span style=\"color: #3333ff;\"><span style=\"font-size: large;\"><b>8 \u2013 local ret, err = mtar.proximo(tar);<\/b><\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Passa para o pr\u00f3ximo cabe\u00e7alho. Num la\u00e7o &#8216;para&#8217; junto com a fun\u00e7\u00e3o leia_cabecalho(), \u00e9 poss\u00edvel pegar o cabe\u00e7alho de cada arquivo.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar<\/b> \u2013 objeto tar criado.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Retornos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>ret \u2013 <\/b>verdadeiro ou falso em caso de erro<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err \u2013 <\/b><span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><span style=\"color: #3333ff;\"><span style=\"font-size: large;\"><b>9 \u2013 local dado, err = mtar.leia_dado(tar,nome);<\/b><\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">L\u00ea o dado bin\u00e1rio inserido anteriormente.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar<\/b> \u2013 objeto tar criado.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>nome<\/b> \u2013 nome do arquivo inserido.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Retornos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>dado \u2013 <\/b>string bin\u00e1ria do arquivo inserido anteriormente.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err \u2013 <\/b><span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><span style=\"color: #3333ff;\"><span style=\"font-size: large;\"><b>10 \u2013 local tab, err = mtar.procure(tar,nome);<\/b><\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Procura por um arquivo &#8216;nome&#8217; dentro do tar e retorna seu cabe\u00e7alho caso exista, ou nulo em erro.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar<\/b> \u2013 objeto tar criado.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>nome<\/b> \u2013 nome do arquivo inserido.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Retornos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tab \u2013 <\/b>tabela cabe\u00e7alho ou falso em caso de erro<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err \u2013 <\/b><span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><span style=\"color: #3333ff;\"><span style=\"font-size: large;\"><b>11 \u2013 local ret, err = mtar.busque(tar,pos);<\/b><\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Busca uma nova posi\u00e7\u00e3o.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar<\/b> \u2013 objeto tar criado.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>pos <\/b>\u2013 (n\u00famero) posi\u00e7\u00e3o nova a ser definida.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Retornos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>ret \u2013 <\/b>verdadeiro ou falso em caso de erro<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err \u2013 <\/b><span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><span style=\"color: #3333ff;\"><span style=\"font-size: large;\"><b>12 \u2013 local pos, err = mtar.anterior(tar);<\/b><\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Volta para o cabe\u00e7alho anterior.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar<\/b> \u2013 objeto tar criado.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Retornos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>pos \u2013 <\/b>(n\u00famero) posi\u00e7\u00e3o ou falso em caso de erro<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err \u2013 <\/b><span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><span style=\"color: #3333ff;\"><span style=\"font-size: large;\"><b>13 \u2013 local ret, err = mtar.escreva_cabecalho_dir(tar,nome);<\/b><\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Escreve um cabe\u00e7alho espec\u00edfico para diret\u00f3rio (pasta).<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>tar<\/b> \u2013 objeto tar criado.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>nome<\/b> \u2013 nome do diret\u00f3rio (pasta).<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Retornos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>ret \u2013<\/b> verdadeiro ou falso em caso de erro<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>err \u2013 <\/b><span style=\"color: #000000;\">(n\u00famero) mensagem de erro. (use mtar.strerro(num_erro); para pegar a string de erro.<\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><span style=\"color: #3333ff;\"><span style=\"font-size: large;\"><b>14 \u2013 local str_erro = mtar.strerro(NumErro);<\/b><\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">As fun\u00e7\u00f5es acima<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Par\u00e2metros:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>NumErro<\/b> : n\u00famero de erro retornado por uma fun\u00e7\u00e3o microtar.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Retornos:<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><b>str_erro<\/b> : string descrevendo n\u00famero de erro, ou erro_desconhecido caso o n\u00famero de erro n\u00e3o seja v\u00e1lido.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><span style=\"color: #3333ff;\"><span style=\"font-size: large;\"><b>15 \u2013 str_versao = mtar.versao;<\/b><\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Vari\u00e1vel predefinida contendo string que descreve a vers\u00e3o desta biblioteca.<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">A sa\u00edda pode ser: lib pmicrotar-0.4 (simples lib tar)<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><span style=\"color: #3333ff;\"><span style=\"font-size: large;\"><b>16 \u2013 Vari\u00e1veis predefinidas de erro:<\/b><\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.SUCESSO = 0;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.FALHA = -1;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.FALHA_AO_ABRIR = -2;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.FALHA_AO_LER = -3;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.FALHA_AO_ESCREVER = -4;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.FALHA_AO_BUSCAR = -5;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.CHECKSUM_INVALIDO = -6;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.CAMPO_NULO = -7;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.NAO_ENCONTRADO = -8;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.MODO_INVALIDO = -9;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.MTAR_INVALIDO = -10;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.CABECALHO_INVALIDO = -11;<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\"><span style=\"color: #3333ff;\"><span style=\"font-size: large;\"><b>16 \u2013 Vari\u00e1veis predefinidas de tipos de arquivos:<\/b><\/span><\/span><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.TIPO_REGULAR; \/\/REGULAR<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.TIPO_HARDLINK ; \/\/HARD LINK<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.TIPO_SYMLINK; \/\/SYMLINK<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.TIPO_CAR; \/\/CHAR<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.TIPO_BLOCO; \/\/BLOCK<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.TIPO_DIRETORIO; \/\/DIRECTORY<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.TIPO_FIFO; \/\/FIFO<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">mtar.CONTIGUO; \/\/CONTIGUOUS<\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Visite o site oficial Prisma: <a href=\"http:\/\/linguagemprisma.br4.biz\/\">http:\/\/linguagemprisma.br4.biz<\/a><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">e-mail: <a href=\"mailto:linguagemprisma@gmail.com\">linguagemprisma@gmail.com<\/a><\/span><\/span><\/p>\n<p align=\"JUSTIFY\"><span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: small;\">Para d\u00favidas, cr\u00edticas ou sugest\u00f5es: <a href=\"http:\/\/linguagemprisma.br4.biz\/prisma_forum\">http:\/\/linguagemprisma.br4.biz\/prisma_forum<\/a><\/span><\/span><\/p>\n<p align=\"CENTER\"><span style=\"color: #3333ff;\"> <span style=\"font-family: Arial, sans-serif;\"><span style=\"font-size: large;\"><b>FIM<\/b><\/span><\/span><\/span><\/p>\n<p>fim!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>BAIXAR pmicrotar-0.4 Quem \u00e9 do mundo *nix j\u00e1 deve conhecer o formato *.tar, muitas vezes confundido com um tipo de compress\u00e3o de arquivo. Na verdade, trata-se de um formato de empacotamento, apenas une v\u00e1rios arquivos ou, at\u00e9 mesmo, diret\u00f3rios. O formato TAR pode ser usado em conjunto com bibliotecas de compress\u00e3o de dados dando assim&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,6],"tags":[],"class_list":["post-3248","post","type-post","status-publish","format-standard","hentry","category-arquivos","category-modo_texto"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/3248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/comments?post=3248"}],"version-history":[{"count":5,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/3248\/revisions"}],"predecessor-version":[{"id":3253,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/3248\/revisions\/3253"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=3248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=3248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=3248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}